Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> [Symfony][SF2] Query Builder
damianooo
post 16.07.2013, 20:41:02
Post #1





Grupa: Zarejestrowani
Postów: 496
Pomógł: 2
Dołączył: 15.07.2011
Skąd: Katowice

Ostrzeżenie: (0%)
-----


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)));



Ten post edytował damianooo 16.07.2013, 21:11:37
Go to the top of the page
+Quote Post
destroyerr
post 16.07.2013, 21:17:25
Post #2





Grupa: Zarejestrowani
Postów: 879
Pomógł: 189
Dołączył: 14.06.2006
Skąd: Bytom

Ostrzeżenie: (0%)
-----


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).
Go to the top of the page
+Quote Post
damianooo
post 16.07.2013, 21:25:36
Post #3





Grupa: Zarejestrowani
Postów: 496
Pomógł: 2
Dołączył: 15.07.2011
Skąd: Katowice

Ostrzeżenie: (0%)
-----


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" .


Go to the top of the page
+Quote Post
destroyerr
post 16.07.2013, 22:58:12
Post #4





Grupa: Zarejestrowani
Postów: 879
Pomógł: 189
Dołączył: 14.06.2006
Skąd: Bytom

Ostrzeżenie: (0%)
-----


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ć?
Go to the top of the page
+Quote Post

Reply to this topicStart new topic
1 Użytkowników czyta ten temat (1 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Wersja Lo-Fi Aktualny czas: 16.07.2025 - 07:56