Consultez la FAQ sur le ZF avant de poster une question
Vous n'êtes pas identifié.
Pages: 1
La doc n'est pas très bien pourvue pour ceux qui ne consultent pas le code.
Pour vous éviter de fouiller dans le code (quoique recommandé si vous avez du temps )
Il faut d'abord construire le Where avant le Select.
Cas 1 :
Pour faire un OR il faut utiliser la 'variable magique' OR
WHERE `mycol` = 'myVal' OR `mycol` = 'myOtherVal' |
$where = new \Zend\Db\Sql\Where(); $where ->equalTo( 'mycol' , 'myVal' ) ->OR ->equalTo( 'mycol' , 'myOtherVal' ) |
Ensuite construire le select de façon habituelle en mettant le $where dans le where()
$select ->where( $where ) |
Cas 2 :
WHERE `acol` = 'avalue' AND (`mycol` = 'myVal' OR `mycol` = 'myOtherVal' ) |
Utiliser les 'variable magique' NEST (ouverture de parenthèse) et UNNEST (fermeture)
$where = new \Zend\Db\Sql\Where(); $where ->equalTo( 'acol' , 'avalue' ) ->NEST ->equalTo( 'mycol' , 'myVal' ) ->OR ->equalTo( 'mycol' , 'myOtherVal' ) ->UNNEST; |
Puis insertion du $where comme précisé au cas 1.
Hors ligne
Salut,
Je sais pas si ça peux t'aider, mais sur un projet ZF 1.9, j'ai rencontré le cas d'un gros select à construire avec des OR.
Je l'ai finalement remplacé par une UNION de plusieurs select et les performances furent sans commune mesure meilleures que le select avec des OR.
Hors ligne
Hello.
Il n'y a pas de union dans ZF2, il faut le faire "à la main".
Hors ligne
Pour le UNION on en est là :
http://www.z-f.fr/forum/viewtopic.php?pid=40759#p40759
Hors ligne
Pages: 1