Troppi programmatori cercano di limitarsi alle funzionalità di un framework. NON. Usa ciò che fornisce il framework. Se non ha la funzionalità che cerchi, allora:
- Codifica la funzionalità di cui hai bisogno in un'estensione di classe
o
- Personalizza il codice all'interno del framework in base alle tue esigenze.
Spesso, gli sviluppatori cercano di piantare un piolo quadrato in un foro rotondo e finiscono per fare troppo lavoro extra che complica davvero il codice. Fai un passo indietro e chiedi perché stai usando il framework per cominciare. Dà struttura a un linguaggio non strutturato. Fornisce solide basi riutilizzabili su cui costruire la tua applicazione. Non vuole essere una scatola in cui metterti ed essere limitato.
AGGIORNAMENTO:mi sono preso un minuto per leggere Condizioni di ricerca complesse e ho trovato la tua risposta:
$joins = array(
array(
'table' => 'test_twos',
'alias' => 'TestTwo',
'type' => 'LEFT',
'conditions' => array(
'TestTwo.id = TestOne.id',
)
),
array(
'table' => 'test_threes',
'alias' => 'TestThree',
'type' => 'LEFT',
'conditions' => array(
'TestThree.id = TestOne.id',
)
)
);
$dbo = $this->getDataSource();
$subQuery = $dbo->buildStatement(
array(
'fields' => array('*'),
'table' => $dbo->fullTableName($this),
'alias' => 'TestOne',
'limit' => null,
'offset' => null,
'joins' => $joins,
'conditions' => null,
'order' => null,
'group' => null
),
$this->TestOne
);
$query = $subQuery;
$query .= ' UNION ';
$joins = array(
array(
'table' => 'test_twos',
'alias' => 'TestTwo',
'type' => 'LEFT',
'conditions' => array(
'TestTwo.id = TestOne.id',
)
),
array(
'table' => 'test_threes',
'alias' => 'TestThree',
'type' => 'RIGHT',
'conditions' => array(
'TestThree.id = TestOne.id',
)
)
);
$dbo = $this->getDataSource();
$subQuery = $dbo->buildStatement(
array(
'fields' => array('*'),
'table' => $dbo->fullTableName($this),
'alias' => 'TestOne',
'limit' => null,
'offset' => null,
'joins' => $joins,
'conditions' => null,
'order' => null,
'group' => null
),
$this->TestOne
);
$query .= $subQuery;
pr($query);