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

UNION-syntaks i Cakephp

Alt for mange kodere forsøger at begrænse sig til funktionaliteten af ​​et framework. GØR IKKE. Brug det, som rammerne giver. Hvis den ikke har den funktionalitet, du søger, så enten:

  • Kod den funktionalitet, du har brug for, i en klasseudvidelse

eller

  • Tilpas spin koden inden for rammerne, så den passer til dine behov.

Ofte forsøger udviklere at hamre en firkantet pind ind i et rundt hul og ender med at lave alt for meget ekstra arbejde, der egentlig kun gør koden kompliceret. Træd et skridt tilbage og spørg, hvorfor du bruger rammen til at begynde med. Det bringer struktur til et ustruktureret sprog. Det giver et solidt genanvendeligt fundament at bygge din applikation på. Det er ikke meningen, at det skal være en boks at sætte sig selv i og begrænses.

OPDATERING:Jeg brugte et minut på at læse Komplekse søgebetingelser og fandt dit svar:

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


  1. MySQL tillader ikke ON UPDATE CURRENT_TIMESTAMP for et DATETIME-felt

  2. Tæl antal dage mellem 2 datoer i JPA

  3. Postgres:Sorter efter strengkolonne med kendte værdier

  4. Adgang nægtet for brugeren på MySQL-databasen