您好,大家早上好,
我正在关注Rob Allen手册中的qickstart教程。 我想改变一些事情。我想要做的一件事就是得到这样的查询:
"SELECT max(id) FROM Albums";
我尝试过像
这样的事情$this->select();
$this->columns(array('id' => 'MAX(id)'));
显然这不是这样做的方法。 我可能需要一些表达式对象左右。
谁能告诉我如何解决这个问题?
整个代码基于手册中的快速入门(ZF2) 我设法编写了这样的查询:
$select = $this->getSql()->select();
$select->columns(array(new Expression('max(id) as MaxId')));
$rowset = $this->selectWith($select);
$row = $rowset->current();
return $row;
这是一个空对象的结果。
但是当我改变时
$select->columns(array(new Expression('max(id) as MaxId')));
到
$select->columns(array(new Expression('max(id) as id')));
然后我找回一个id为1的对象。这是max(id)。
但是当我在函数exchangeArray中将我的相册对象添加到maxId一行时,它返回maxId字段。
但是,每次我只想做这样的查询时,我不需要这样做。这真的是它的工作方式吗?
答案 0 :(得分:5)
因此,如果我正确地看到了这种情况(可能不是这种情况),你就会像刚刚那样做,但将SQL表达式包装成new Expression('max(id))
。所以它应该像下面的
use Zend\Db\Sql\Expression;
//...
$this->columns(array(
'maxid' => new Expression('max(id)')
));
如果这样的语法错误,请不要诅咒我,但我会假设知道Sql \ Expression会对你有所帮助;)