2011-02-10 16 views
6

Come faccio girare questa sinistra unirsi query:Zend Come si crea un LEFT JOIN

select advertisercontest.*, advertiseraccount.advertiserid, advertiseraccount.companyname 
from advertisercontest 
left join advertiseraccount on advertiseraccount.loginid = advertisercontest.loginid 
where advertisercontest.golive is not NULL; 

in un LEFT JOIN in Zend?

risposta

19

Si potrebbe fare come segue:

$db = Zend_Db_Table::getDefaultAdapter(); 

    $select = $db->select(); 
    $select->from('advertisercontest', '*') 
      ->joinLeft(
        'advertiseraccount', 
        'advertiseraccount.loginid = advertisercontest.loginid', 
        array('advertiseraccount.advertiserid', 'advertiseraccount.companyname') 
        ) 
      ->where('advertisercontest.golive is not NULL');; 

    $result = $db->fetchAll($select); 

    var_dump($result); 

Speranza è OK.

+0

Fantastico !! Grazie! Ho una domanda. Sto estendendo Zend_Db_Table_Abstract e ho avuto questo: $ rows = $ this-> select() -> from ('advertisercontest', '*') -> joinLeft ('advertiseraccount', 'advertiseraccount.loginid = advertisercontest. loginid ', array (' advertiseraccount.advertiserid ',' advertiseraccount.companyname ')) -> dove (' advertisercontest.golive non è NULL ') -> order (' advertisercontestid DESC '); Ma non ha funzionato? Ma il tuo esempio ha fatto .. Ho nel mio applications.ini resources.db.isDefaultTableAdapter = true – coder3

+0

@ coder3. Probabilmente il codone non funziona perché devi eseguire $ rows = $ this-> fetchAll ($ select). Nel tuo caso hai $ righe che saranno solo un'istanza di Zend_Db_Select, non i risultati effettivi. Ad ogni modo, se trovi la mia risposta accettabile, sarei felice se tu potessi accettarlo. Grazie e spero che funzionerà. – Marcin

+0

Risposta accettata. Grazie! – coder3