ZF2自定义查询

时间:2012-09-23 07:20:56

标签: zend-framework2

您好,大家早上好,

我正在关注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字段。

但是,每次我只想做这样的查询时,我不需要这样做。这真的是它的工作方式吗?

1 个答案:

答案 0 :(得分:5)

使用Zend\Db\Sql\Expression

因此,如果我正确地看到了这种情况(可能不是这种情况),你就会像刚刚那样做,但将SQL表达式包装成new Expression('max(id))。所以它应该像下面的

use Zend\Db\Sql\Expression;
//...
$this->columns(array(
    'maxid' => new Expression('max(id)')
));

如果这样的语法错误,请不要诅咒我,但我会假设知道Sql \ Expression会对你有所帮助;)