2016-06-01 8 views
0

ich die folgenden Abfrage mit ZF2 erstellen möge:Alias ​​in ZF2 wählen - mit berechnetem Feld

SELECT (a + b) AS c FROM ta WHERE c > 1; 

mit einem Tisch ta enthalten zwei Integer-Felder a und b.

versuchte ich es bisher mit diesem Code:

$columns = array('c'=>'(a + b)'); 
$where = 'c > 1'; 
$tableGateway = $this->getTableGateway('ta'); 
$sql = $tableGateway->getSql(); 
$select = $sql->select()->columns($columns); 
$select->where($where);  
$itemData = $tableGateway->selectWith($select); 

Leider ist die Abfrage zurück gegeben:

SELECT `ta`.`a + b` AS `c` FROM `ta` WHERE c > 1; 

Jede Idee, wie das zu erreichen? Ich habe es auch ohne die Klammern versucht: $columns = array('c'=>'a + b'); was auch nicht funktioniert.

Ich habe es zuvor mit $this->getAdapter()->query($sqlQuery, Adapter::QUERY_MODE_EXECUTE); versucht, aber ich habe in eine ungepufferte Abfrage Problem mit ->closeCursor() nicht auflösbar gerannt.

Antwort

1

Verwendung Zend\Db\Sql\Predicate\Expression:

$columns = array('c'=> new Expression('(ta.a + ta.b)')); 
+0

Danke, das wie ein Charmeur funktioniert! – Andreas