所以我有這樣的代碼:Zend的分貝選擇加入幫助
$sql = new Zend_Db_Select($db);
$sql->from("j");
$sql->join("k","k.id = j.id",array());
echo $sql;
導致查詢:
SELECT `j`.* FROM `j` INNER JOIN `k` ON k.id = j.id
但我不只是想Ĵ*
我也希望ķ。*
我怎麼爲這個指定Zend_Db_Select對象?
所以我有這樣的代碼:Zend的分貝選擇加入幫助
$sql = new Zend_Db_Select($db);
$sql->from("j");
$sql->join("k","k.id = j.id",array());
echo $sql;
導致查詢:
SELECT `j`.* FROM `j` INNER JOIN `k` ON k.id = j.id
但我不只是想Ĵ*
我也希望ķ。*
我怎麼爲這個指定Zend_Db_Select對象?
join()的第三個參數是columns
select。您已經傳遞了一個空數組。
$sql = new Zend_Db_Select($db);
$sql->from('j');
$sql->join('k','k.id = j.id',array());
echo $sql;
注:此條件k.id = j.id
你應該使用LEFT JOIN( - > joinLeft(...))
您可以在從方法指定列。
$sql->from(array("j" => "j", array("j.*" , "k.*");
老實說,我不能完全肯定,但在Zend文檔是這麼說的:)
,如果你也想k.*
,我想你應該有
$sql->join("k","k.id = j.id");
,而沒有array()
作爲第三個參數。
據我所知,這第三個參數指定從k
選擇列,因爲你傳遞了一個空數組我猜你重寫默認k.*
您明確告訴參加,你不想要列返回k
當你傳遞一個空數組到它。相反使用:
$sql = new Zend_Db_Select($db);
$sql->from('j');
$sql->joinLeft('k','k.id = j.id');
echo $sql;
這應該產生你想要我想的。
$sql=new Zend_Db_Select($db);
$sql->from('j',array(
//here fields you want to get from 'j' Ex. 'j.id'
));
$sql->join('k',
// here your condition
'k.id = j.id',
//here the fields you need from 'k'
array(
//now the array is empty!!You need to specify needed fields.
//Or just remove it.Defaults is "k.*"!
));