ZF2 中的别名 select - 带有计算字段
Alias in ZF2 select - with calculated field
我想使用 ZF2 创建以下查询:
SELECT (a + b) AS c FROM ta WHERE c > 1;
与tableta
包含两个整数字段a
和b
。
到目前为止我已经用这段代码试过了:
$columns = array('c'=>'(a + b)');
$where = 'c > 1';
$tableGateway = $this->getTableGateway('ta');
$sql = $tableGateway->getSql();
$select = $sql->select()->columns($columns);
$select->where($where);
$itemData = $tableGateway->selectWith($select);
很遗憾,返回的查询是:
SELECT `ta`.`a + b` AS `c` FROM `ta` WHERE c > 1;
知道如何实现吗?我也尝试过不带括号:$columns = array('c'=>'a + b');
也不起作用。
我之前用 $this->getAdapter()->query($sqlQuery, Adapter::QUERY_MODE_EXECUTE);
尝试过,但我 运行 遇到了一个无法用 ->closeCursor()
.
解决的无缓冲查询问题
使用Zend\Db\Sql\Predicate\Expression
:
$columns = array('c'=> new Expression('(ta.a + ta.b)'));
我想使用 ZF2 创建以下查询:
SELECT (a + b) AS c FROM ta WHERE c > 1;
与tableta
包含两个整数字段a
和b
。
到目前为止我已经用这段代码试过了:
$columns = array('c'=>'(a + b)');
$where = 'c > 1';
$tableGateway = $this->getTableGateway('ta');
$sql = $tableGateway->getSql();
$select = $sql->select()->columns($columns);
$select->where($where);
$itemData = $tableGateway->selectWith($select);
很遗憾,返回的查询是:
SELECT `ta`.`a + b` AS `c` FROM `ta` WHERE c > 1;
知道如何实现吗?我也尝试过不带括号:$columns = array('c'=>'a + b');
也不起作用。
我之前用 $this->getAdapter()->query($sqlQuery, Adapter::QUERY_MODE_EXECUTE);
尝试过,但我 运行 遇到了一个无法用 ->closeCursor()
.
使用Zend\Db\Sql\Predicate\Expression
:
$columns = array('c'=> new Expression('(ta.a + ta.b)'));