2016-06-01 1 views
0

Je veux créer la requête suivante avec ZF2:Alias ​​dans ZF2 sélectionner - avec le champ calculé

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

avec une table ta contiennent deux champs entiers a et b.

Je l'ai essayé jusqu'à présent avec ce 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); 

Malheureusement, la requête est-rendu:

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

Toute idée comment y parvenir? J'ai aussi essayé sans les crochets: $columns = array('c'=>'a + b'); qui ne fonctionne pas non plus.

Je l'ai déjà essayé avec $this->getAdapter()->query($sqlQuery, Adapter::QUERY_MODE_EXECUTE); mais j'ai rencontré un problème de requête sans tampon non résolvable avec ->closeCursor().

Répondre

1

Utilisation Zend\Db\Sql\Predicate\Expression:

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

Merci, qui fonctionne comme un charmeur! – Andreas