3

大家好,早上好,

我正在遵循手册中 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 字段。

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

4

1 回答 1

5

使用Zend\Db\Sql\Expression

因此,如果我正确地看到了这一点(可能不是这种情况),您会像刚才那样做,但将 SQL-Expression 包装到new Expression('max(id)). 所以它应该像下面这样

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

如果这样的语法是错误的,请不要诅咒我,但我认为了解 Sql\Expression 已经对你有所帮助;)

于 2012-09-23T08:48:16.350 回答