2011-02-10 40 views
6

Làm thế nào để rẽ trái này tham gia truy vấn:Zend làm cách nào để tạo ra một trái join

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

vào một trái tham gia trong Zend?

Trả lời

19

Bạn có thể làm như sau:

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

Hy vọng nó là OK.

+0

Tuyệt vời !! Cảm ơn! Tôi có một câu hỏi. Tôi đang mở rộng Zend_Db_Table_Abstract và tôi có điều này: $ rows = $ this-> select() -> from ('advertisercontest', '*') -> joinLeft ('advertiseraccount', 'advertiseraccount.loginid = advertisercontest. loginid ', mảng (' advertiseraccount.advertiserid ',' advertiseraccount.companyname ')) -> trong đó (' advertisercontest.golive không phải là NULL ') -> order (' advertisercontestid DESC '); Nhưng nó không hoạt động? Nhưng ví dụ của bạn đã làm .. Tôi có trong tài nguyên apps.ini của tôi.db.isDefaultTableAdapter = true – coder3

+0

@ coder3. Bạn cod có thể không hoạt động vì bạn cần thực hiện $ rows = $ this-> fetchAll ($ select). Trong trường hợp của bạn, bạn có $ hàng mà sẽ chỉ là một thể hiện của Zend_Db_Select, không phải là kết quả thực tế. Dù sao, nếu bạn tìm thấy câu trả lời của tôi chấp nhận được, tôi sẽ rất vui nếu bạn có thể chấp nhận nó. Cảm ơn và hy vọng nó sẽ hoạt động. – Marcin

+0

Đã chấp nhận câu trả lời. Cảm ơn! – coder3

Các vấn đề liên quan