ZF2中的别名选择 - 使用计算字段

时间:2016-06-01 22:29:11

标签: php mysql zend-framework2 php-5.5

我想用ZF2创建以下查询:

SELECT (a + b) AS c FROM ta WHERE c > 1;

表格ta包含两个整数字段ab

到目前为止,我尝试使用此代码:

$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()无法解决的查询问题。

1 个答案:

答案 0 :(得分:1)

使用Zend\Db\Sql\Predicate\Expression

$columns = array('c'=> new Expression('(ta.a + ta.b)'));