157 votes

Comment utiliser WHERE IN avec Doctrine 2

J’ai le code suivant qui me donne l’erreur :

Code :

Données (ou $ids) :

Résultat de la DQL :

420voto

Maciej Pyszyński Points 2113

La meilleure façon de le faire :

127voto

Buster Neece Points 426

Dans la recherche de ce problème, j'ai trouvé quelque chose qui va être important pour toute personne exécutant dans cette même question, et la recherche d'une solution.

À partir de l'original post, la ligne de code suivante:

$qb->add('where', $qb->expr()->in('r.winner', array('?1')));

Habillage de paramètre nommé comme un tableau provoque le paramètre de limite certain nombre de problèmes. En le supprimant de sa gamme d'emballage:

$qb->add('where', $qb->expr()->in('r.winner', '?1'));

Ce problème devrait être résolu. Ce pourrait avoir été un problème dans les versions précédentes de la Doctrine, mais il est corrigé dans les versions les plus récentes de la 2.0.

81voto

et de l’achèvement de la solution de chaîne

28voto

Jeremy Hicks Points 1841

J’ai trouvé que, malgré ce qu’indiquent les docs, la seule façon d’obtenir ce travail est comme ceci :

http://groups.Google.com/Group/doctrine-dev/browse_thread/thread/fbf70837293676fb

7voto

ck1 Points 36

La meilleure façon de faire cela - surtout si vous ajoutez plus d’une condition - est :

Si votre tableau de valeurs contient des chaînes, vous ne pouvez pas utiliser la méthode setParameter avec une chaîne d’implosion, parce que vos devis vont être échappés !

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X