2012-12-10 8 views
12

Ich versuche, eine Abfrage wie folgt mit Zend Framework 2 zu tun:Zend Framework 2 und SELECT COUNT (*) Abfrage

SELECT count(*) as num FROM mytable 

Hier ist der Code, den ich mit meiner select-Anweisung (Bär in den Bau Geist ich habe die notwendigen Klassen importiert):

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

Dieser Code funktioniert nicht, da die resultierende Abfrage wie folgt:

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

..., die die folgenden Fehler:

Invalid column name 'count(*)' 

Dies wird durch die eckigen Klammern um Zahl verursacht wird (*). Wie kann ich das richtig funktionieren lassen, im Grunde um count (*) anstelle von [count (*)] in der SQL zu haben. Außerdem weiß ich, dass Sie es mit nur einer normalen Abfrage tun können, aber ich brauche das, um mit dem Select-Objekt zu arbeiten. So weit ich weiß, funktionierte das mit den vorherigen Versionen von Zend, ich habe viele Lösungen für diese gesehen, aber nichts für Zend Framework 2.

Antwort

39

Jemand auf einem anderen Forum war so freundlich, mir die Antwort zu geben dafür. Dies ist, wie es gemacht wird:

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

Ja, ohne new \Zend\Db\Sql\Expression('COUNT(*)'), nur COUNT(*) die folgenden Fehler Aussage führt:

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

die es

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

aufgelöst zu haben.

0

Können Sie diesen Code versuchen?

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

return $this->num;