大家好,早上好
我正在遵循手册中 Rob Allen 的快速入门教程。 我正在努力改变一些事情。我正在尝试做的一件事是获得这样的查询:
"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 字段。
但是,我不可能每次都需要这样做,我只是想做这样的查询。这真的是它的工作方式吗?
最佳答案
因此,如果我正确地看到了这一点(可能并非如此),你会像刚才那样做,但将 SQL 表达式包装到 new Expression('max(id))
.所以应该是下面这样
use Zend\Db\Sql\Expression;
//...
$this->columns(array(
'maxid' => new Expression('max(id)')
));
如果这样的语法是错误的,请不要诅咒我,但我认为了解 Sql\Expression 已经对您有所帮助 ;)
关于zend-framework2 - ZF2 自定义查询,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12550490/