Zend framework2 带联合收割机的ZF2结果集

Zend framework2 带联合收割机的ZF2结果集,zend-framework2,Zend Framework2,我很难从“组合”对象中获得结果,因为它不再是“选择”对象 我需要UNION4个Select对象,这只适用于Zend Framework的Combine类,因为Select类的Combine()方法只支持合并两个Select对象 我可以获取sql字符串,然后获取结果集,但当我需要再次将其转换回字符串以获取结果时,我构建zf2样式的sql是为了什么 我还想把所有这些联合选择放在一个选择中,就像 (new Sql($adapter))->select()->from(['x' =>

我很难从“组合”对象中获得结果,因为它不再是“选择”对象

我需要
UNION
4个Select对象,这只适用于
Zend Framework
的Combine类,因为Select类的
Combine()
方法只支持合并两个Select对象

我可以获取sql字符串,然后获取结果集,但当我需要再次将其转换回字符串以获取结果时,我构建zf2样式的sql是为了什么

我还想把所有这些联合选择放在一个选择中,就像

(new Sql($adapter))->select()->from(['x' => $combinedSelects]);
但是它说

“Zend\Db\Sql\Combine类的对象无法转换为字符串”

有什么想法吗

编辑:

为了更好地理解我遇到的问题:

$select = $this->tableGateway->getSql()->select();
$select1 = ...
$select2 = ...
$select3 = ...

$combine = new Combine([
    $select1,
    $select2,
    $select3
]);

$combinedSelects = $combine->union($select)
这就是我的问题开始的地方: 现在我提出:

$sql = $combinedSelects->getSqlString($platform); 
获取sql字符串,然后将其放入新变量,如:

$sql = "SELECT * FROM ( $sql ) AS x";
但我希望像上面提到的那样:

$sql = (new Sql($adapter))->select()->from(['x' => $combinedSelects]);
以便我可以使用:

$resultSet = $this->tableGateway->selectWith($sql);
而不是:

$resultSet = $adapter->query($sql, []);

希望这有助于进一步确定我的问题

为什么不使用
join
?我认为你的问题可以通过加入和合并来解决。嗨,谢谢你的回答,我认为加入并不是一个真正的选择,我编辑了我的帖子,以便你能更多地了解我真正的问题是什么