Подтвердить что ты не робот

Zend Framework 2 и запрос SELECT (*)

Я пытаюсь сделать такой запрос, используя Zend Framework 2:

SELECT count(*) as num FROM mytable

Вот код, который я использую для создания моего оператора select (помните, что я импортировал необходимые классы):

$select = new Select();
$select->from('mytable')
       ->columns(array('num'=>'count(*)'), false);

Этот код не работает, потому что результирующий запрос выглядит следующим образом:

SELECT [count(*)] AS [num] FROM [mytable]

..., который вызывает следующую ошибку:

Invalid column name 'count(*)'

Это вызвано квадратными скобками вокруг count (*). Как я могу заставить это работать правильно, в основном, чтобы иметь счетчик (*) вместо [count (*)] в SQL. Кроме того, я знаю, что вы можете сделать это с помощью обычного запроса, но мне нужно это для работы с объектом Select. Насколько мне известно, это работало с предыдущими версиями Zend, я видел множество решений для них, но ничего для Zend Framework 2.

4b9b3361

Ответ 1

Кто-то на другом форуме был достаточно любезен, чтобы дать мне ответ на этот вопрос. Вот как это делается:

$select->columns(array('num' => new \Zend\Db\Sql\Expression('COUNT(*)')));

Ответ 2

Да, без new \Zend\Db\Sql\Expression('COUNT(*)'), просто COUNT(*) приводит к следующему выражению ошибки:

SQLSTATE [42S22]: Столбец не найден: 1054 Неизвестный столбец 'albs.COUNT(*)' in 'field list'

Имея

new \Zend\Db\Sql\Expression('COUNT(*)')

разрешил его.

Ответ 3

Не могли бы вы попробовать этот код?

$this->num = $select->columns(array('num' => new \Zend\Db\Sql\Expression('COUNT(*)')));

return $this->num;