Как я могу выбрать MAX столбца, используя Zend_Db_Table? - PullRequest
10 голосов
/ 21 марта 2011

Какой самый простой и простой способ выбрать максимум столбца из таблицы с помощью Zend_Db_Table? По сути, я просто хочу выполнить этот запрос в Zend:

SELECT MAX(id) AS maxID FROM myTable;

Ответы [ 5 ]

11 голосов
/ 21 марта 2011

Вам нужно использовать Zend_Db_Expr, чтобы использовать функции mysql:

return $this->fetchAll(
            $this->select()
                ->from($this, array(new Zend_Db_Expr('max(id) as maxId')))
            )
    );
3 голосов
/ 21 марта 2011

Вы можете запустить прямой sql, используя $db->query();, ваш просто будет:

$db->query("SELECT MAX(id) AS maxID FROM myTable");

, но если вы хотите, чтобы обозначение объекта, вы сделали бы что-то вроде этого:

$db->select()->from("myTable", array(new Zend_Db_Expr("MAX(id) AS maxID")));
2 голосов
/ 25 июля 2017

Для тех, кто хочет просто выбрать максимальный идентификатор из своего столбца идентификаторов в Zend Framework 2 (возможно, и 3), но получает эту ошибку ...

При обработке данных первичного ключа,известный идентификатор ключа не был найден в массиве данных

... обратите внимание, что вам понадобится псевдоним MAX(id) как id.

Пример внутри таблицы, расширенной изTableGateway класс:

$select = $this->sql->select();
$select->columns(['id' => new Expression('MAX(id)')]);
$maxId = $this->selectWith($select)->current()->id;
return (int) $maxId;
1 голос
/ 26 июня 2012

Другой способ такой:

$select=new Zend_Db_Select($db);
$select->from(array($table),array('max($column)'));
$select->where('condition');
$answer=$db->fetchOne($select);

Если Вы сделаете это так, вы сможете позже отредактировать это проще!

0 голосов
/ 11 апреля 2018
$select = new Select();
$select->from('tablename');
$select->where(array('post_id', 1));
$select->columns(array('id' => new Expression('MAX(id)')));
$results = $this->getTableGateway()->selectWith($select);
...