Mysql
 sql >> Database >  >> RDS >> Mysql

sintassi UNION in Cakephp

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);