Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [Symfony][SF2] Query Builder
Forum PHP.pl > Forum > PHP > Frameworki
damianooo
Witam,

Mam problem z użyciem klauzuli WHERE IN w Query Builderze.

Mam taką oto funkcję w Repository klasy User:


  1. public function findSomeUsers()
  2. {
  3. $query = $this->getEntityManager()
  4. ->createQuery('
  5. SELECT u.username as username
  6. FROM My\BetBundle\Entity\User u
  7. WHERE u.id IN (:users)
  8. ')
  9. ->setParameters('users', array(1, 2, 3, 4));
  10. return $query->getArrayResult();
  11. }


Błąd jaki mi wyrzuca to:

  1. Warning: Invalid argument supplied for foreach() in /var/www/test/vendor/doctrine/orm/lib/Doctrine/ORM/Query.php line 278


Co robię źle, że nie działa mi takie podstawienie parametrów ? Jak powinno wyglądać przekazanie tablicy parametrów do klauzuli WHERE IN ? (Chodzi mi o to że chciałbym później przekazać w parametrze funkcji tablicę z IDkami )



OK , znalazłem rozwiązanie ... zamiast tak:

  1. ->setParameters('users', array(1, 2, 3, 4));


ma być tak:

  1. ->setParameters(array('users' => array(1, 2, 3, 4)));

destroyerr
Zacznę od początku:
Jaki to ma związek z Symfony2?
Jaki to ma związek z QueryBuilder?

Nie działa bo źle wywołusz funkcje setParameters. Prawdopodobnie chciałeś skorzystać z setParameter (jedna literka za dużo).
damianooo
no z Symfony 2 to ma związek ponieważ występuje w Symfony 2 ...

  1. namespace My\BetBundle\Entity;
  2.  
  3. use Doctrine\ORM\EntityRepository;
  4.  
  5. /**
  6.  * OfferRepository
  7.  *
  8.  * This class was generated by the Doctrine ORM. Add your own custom
  9.  * repository methods below.
  10.  */
  11. class UserRepository extends EntityRepository
  12. {
  13.  
  14. public function findSomeUsers()


Jeśli chodzi o tą jedną literkę "s" to akurat w moim przykładzie nie zadziała w ten sposób ... działa natomiast z literką "s" .


destroyerr
Cytat
no z Symfony 2 to ma związek ponieważ występuje w Symfony 2 ...

Równie dobrze mogłeś to pytanie zadać na forum Twojego systemu operacyjnego. Problem dotyczy Doctrine, nie Symfony!

Cytat
Jeśli chodzi o tą jedną literkę "s" to akurat w moim przykładzie nie zadziała w ten sposób ... działa natomiast z literką "s" .

Dlaczego akurat u Ciebie funkcja setParameter miałaby nie działać?
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.