我遇到了从“Combine”对象获取结果的麻烦,因为它不再是“选择”对象。
我需要UNION
4选择对象,这仅适用于Zend Framework
的Combine类,因为Select类的combine()
方法仅支持联合两个选择对象。
我可以获取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, []);
希望这有助于更多地识别我的问题