ZF2 Пользовательский запрос

Привет и доброго утра всем вам,

Я следую руководству по быстрому запуску от Роба Аллена. Я пытаюсь изменить некоторые вещи. Одна из вещей, которые я пытаюсь сделать, это получить такой запрос:

"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')));

to

  $select->columns(array(new Expression('max(id) as id')));

затем я возвращаю объект с идентификатором 1. Это максимальный (идентификатор).

Но когда я добавляю в свой объект альбома в функцию exchangeArray одну строку с maxId, то она возвращает поле maxId.

НО, не может быть, чтобы мне нужно было делать это каждый раз, когда я просто хочу сделать такой запрос. Это действительно так?


person sanders    schedule 23.09.2012    source источник


Ответы (1)


Используйте Zend \Db\Sql\Выражение

Итак, если я вижу это правильно (что может быть не так), вы должны сделать это, как вы только что сделали, но обернуть SQL-выражение в new Expression('max(id)). Таким образом, это должно быть похоже на следующее

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

Если такой синтаксис неверен, пожалуйста, не ругайте меня, но я предполагаю, что знание Sql\Expression уже поможет вам;)

person Sam    schedule 23.09.2012