sql >> Base de Datos >  >> RDS >> Mysql

Sintaxis UNION en Cakephp

Demasiados codificadores intentan limitarse a la funcionalidad de un marco. NO. Utilice lo que proporciona el marco. Si no tiene la funcionalidad que busca, entonces:

  • Codifique la funcionalidad que necesita en una extensión de clase

o

  • Personalice el código dentro del marco para satisfacer sus necesidades.

A menudo, los desarrolladores intentan martillar una clavija cuadrada en un orificio redondo y terminan haciendo demasiado trabajo adicional que en realidad solo complica el código. Da un paso atrás y pregúntate por qué estás usando el marco para empezar. Aporta estructura a un lenguaje no estructurado. Proporciona una base sólida y reutilizable para construir su aplicación. No pretende ser una caja en la que ponerse y estar limitado.

ACTUALIZACIÓN:me tomé un minuto para leer Condiciones de búsqueda complejas y encontré tu respuesta:

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