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