2012-12-10 19 views
12

Próbuję zrobić kwerendę tak użyciu Zend Framework 2:Zend Framework 2 i SELECT count (*) zapytanie

SELECT count(*) as num FROM mytable 

Oto kod używam budować mój select (mieć na umysł mam importowane niezbędnych klas):

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

Ten kod nie działa, ponieważ wynikowy zapytania jest następująca:

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

... który generuje następujący błąd:

Invalid column name 'count(*)' 

Jest to spowodowane nawiasami kwadratowymi wokół liczby (*). W jaki sposób mogę uzyskać to działa poprawnie, w zasadzie mieć count (*) zamiast [count (*)] w SQL. Ponadto wiem, że można to zrobić za pomocą zwykłego zapytania, ale potrzebuję tego do pracy z obiektem Select. O ile mi wiadomo, działało to z poprzednimi wersjami Zend, widziałem wiele rozwiązań dla nich, ale nic dla Zend Framework 2.

Odpowiedz

39

Ktoś na innym forum był na tyle uprzejmy, aby dać mi odpowiedź dla tego. Jak to się robi:

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

Tak, bez new \Zend\Db\Sql\Expression('COUNT(*)') tylko COUNT(*) prowadzi do następującego stwierdzenia błędu:

SQLSTATE[42S22]: Column not found: 1054 Unknown column 'albs.COUNT(*)' in 'field list'

Mając

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

rozwiązane.

0

Czy możesz spróbować tego kodu?

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

return $this->num;