Mysql
 sql >> Base de données >  >> RDS >> Mysql

Syntaxe UNION dans Cakephp

Trop de codeurs essaient de se limiter à la fonctionnalité d'un framework. NE LE FAITES PAS. Utilisez ce que le cadre fournit. S'il n'a pas la fonctionnalité que vous recherchez, alors soit :

  • Codez la fonctionnalité dont vous avez besoin dans une extension de classe

ou

  • Personnalisez le spin du code dans le cadre pour répondre à vos besoins.

Souvent, les développeurs essaient d'enfoncer une cheville carrée dans un trou rond et finissent par faire beaucoup trop de travail supplémentaire qui ne fait que compliquer le code. Prenez du recul et demandez pourquoi vous utilisez le cadre pour commencer. Il structure un langage non structuré. Il fournit une base solide et réutilisable sur laquelle construire votre application. Il n'est pas destiné à être une boîte dans laquelle vous mettre et être limité.

MISE À JOUR :J'ai pris une minute pour lire Conditions de recherche complexes et j'ai trouvé votre réponse :

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