sql >> Databasteknik >  >> RDS >> Mysql

UNION-syntax i Cakephp

Alltför många kodare försöker begränsa sig till funktionaliteten hos ett ramverk. GÖR INTE. Använd det som ramverket ger. Om den inte har den funktionalitet du söker, gör antingen:

  • Koda in den funktionalitet du behöver i ett klasstillägg

eller

  • Anpassa koden inom ramen för att passa dina behov.

Ofta försöker utvecklare hamra en fyrkantig pinne i ett runt hål och sluta göra alldeles för mycket extraarbete som egentligen bara gör koden komplicerad. Ta ett steg tillbaka och fråga varför du använder ramverket till att börja med. Det ger struktur till ett ostrukturerat språk. Det ger en solid återanvändbar grund att bygga din applikation på. Det är inte tänkt att vara en låda att sätta sig i och begränsas.

UPPDATERING:Jag tog en minut att läsa Komplexa sökvillkor och hittade ditt 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. Hur man automatiserar databasfailover med ClusterControl

  2. Spara latitud- och longitudvärden i en MySQL-databas iOS

  3. Postgresql 11:Anropsfel för lagrad procedur - För att anropa en procedur, använd CALL, Java

  4. Hur man implementerar en många-till-många hierarkisk struktur i MySQL