Zend框架选择对象和UNION()

Ric*_*nop 4 php mysql union select zend-framework

我很确定这在Zend Framework中是不可能的(我已经搜索过Web,文档和问题跟踪器),但我只是想确定一下,我在这里问.

$select = $this->select();
$select->union($select1, $select2);
Run Code Online (Sandbox Code Playgroud)

那当然不行.解释我需要什么.我需要使用UNION()在SELECT查询中合并2个表,我知道我可以这样做:

$select = "$select1 UNION $select2";
Run Code Online (Sandbox Code Playgroud)

问题是会返回一个字符串,我需要一个select对象,所以我可以使用它与Zend_Paginator.

我已经通过修改我的数据库架构解决了这个问题,但我只是好奇是否有一些解决方法.

Jus*_*tin 13

以下是我为建立联盟所做的工作:

$select = $this->select();
//common select from both sides of the union goes here

$select1 = clone($select);
//select1 specifics here

$select2 = clone($select);
//select 2 specifics here

$db = $this->getAdapter();
$pageselect = $db->select()->union(array("($select1)", "($select2)"));
Run Code Online (Sandbox Code Playgroud)

记住Db_Select__toString会打印出由该选择生成的SQL,帮你调试.


Dav*_*unt 7

Zend_Db_Select 有一个union方法,所以我认为如果你可以使用select对象构建你的查询是可能的.我没有使用Zend_Db_Select(或表子类)和union,但我想你可以做类似的事情

$select = $this->select()
               ->where('blah')
               ->union($sql);
Run Code Online (Sandbox Code Playgroud)