繁体   English   中英

zend db select 加入帮助

[英]zend db select join help

所以我有这个代码:

$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

但我不只是想要 j.*

我也想要k.*

我如何为此指定 zend_db_select ?

join() 的第三个参数是 select 的columns 您传递了一个空数组。

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

您可以在 from 方法中指定列。

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

));

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM