2011-05-31 41 views
1

所以我有这样的代码: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对象?

回答

2

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(...))

1

您可以在从方法指定列。

$sql->from(array("j" => "j", array("j.*" , "k.*"); 

老实说,我不能完全肯定,但在Zend文档是这么说的:)

0

,如果你也想k.*,我想你应该有
$sql->join("k","k.id = j.id");,而没有array()作为第三个参数。
据我所知,这第三个参数指定从k选择列,因为你传递了一个空数组我猜你重写默认k.*

0

您明确告诉参加,你不想要列返回k当你传递一个空数组到它。相反使用:

$sql = new Zend_Db_Select($db); 
$sql->from('j'); 
$sql->joinLeft('k','k.id = j.id'); 
echo $sql; 

这应该产生你想要我想的。

0
$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.*"! 

));