2009-11-02 2 views
3

En utilisant Doctrine dans un projet Symfony, je suis arrivé à la situation où je dois appliquer une condition, puis l'une des deux conditions suivantes (qui sont toutes les deux être des sous-requêtes). Je sais que des fonctions etoù() et orWhere(), mais ai du mal à les utiliser pour générer des choses comme: OÙ cond1 ET (cond2 OU cond3)Doctrine - Comment demandez-vous WHERE cond1 ET (cond2 ou cond3)

+1

http://stackoverflow.com/questions/1049617/complex-where-clauses-using-the-php-doctrine-orm m'a permis de faire ce que je voulais. – m14t

Répondre

0

pour la cond2 ou l'utilisation cond3 dans laquelle

où cond1 et dans laquelle cond2 ou dans lequel cond3

Espérons que cela vous permet de démarrer

+0

Cela semble aider avec la partie sous-requête, mais ne semble pas aider à ajouter la hiérarchie à mes opperators ET/OR, non? – m14t

0

Je ne l'ai pas entendu parler de cet outil, mais ne devrait pas quelque chose comme

... where cond1 andWhere (cond2 orWhere cond3) 

travail? Ou quelle que soit la syntaxe actuelle. Ne hésitez pas à me dire si je me trompe et je vais le supprimer et se glissa dans un coin;)

2

Vous pouvez le faire cinque DQL:

$models = Doctrine::getTable('ModelName') 
    ->findByDql(
     'field_one = ? AND (field_two = ? OR field_three = ?)', 
     array('cond_1','cond_2', 'cond_3') 
    ); 

Ainsi modèles $ seront un Doctrine_Collection avec tous les éléments trouvés.

Questions connexes