2015-04-07 53 views
1
$select->from(array('b1'=>'books_master'), 'b1.book_id'); 

$select->joinLeft(array('b2'=>'books_details'), 'b1.book_id = b2.book_id', 'b2.book_id'); 

這回null,即b2.book_id的值,如果在右表中匹配行沒有找到。列順序首左連接Zend框架

記錄在books_master中,但不在books_details中。

請指導我。

回答

0

joinleft方法的第三個參數必須是要獲取的列的數組

請參閱documentation

LEFT JOINjoinLeft(table, condition, [columns])方法。

包含左操作數表中的所有行,與右操作數表中的行匹配,如果沒有行與左表匹配,則右操作數表中的列填充NULL

你的代碼應該是:

$select->from(array('b1'=>'books_master'), 'b1.book_id'); 
$select->joinLeft(array('b2'=>'books_details'), 'b1.book_id = b2.book_id', 
        array('b2.book_id')); 
+0

那OK @blackbishop。我認爲你的努力得到了我的問題,上面的代碼返回「null」,即在「joinLeft」函數中指定的「b2.book_id」的值,而不是返回「b1.book_id」的非null值在「from()」子句中指定。理想情況下,它應該返回,因爲它是左操作數表列。 – vasim