Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> [Symfony][SF2] Optymalizacja zapytania do bazy, Zmniejszenie liczby zapytań widocznych w Toolbarze
damianooo
post 16.07.2013, 21:53:26
Post #1





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

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


Witam,

Chcąc ograniczyć liczbę zapytań do bazy danych, które pokazuje mi Toolbar , chciałbym zmodyfikować zapytanie tak aby dla każdego rekordu nie wykonywalo się to samo, tylko żeby na przykład jednym zapytaniem pobrać osobno dane dla każdego usera. Nie wiem tylko czy w moim kodzie da się to zrobić.

Kod z kontrolera:

  1. $users = array(2,3,5,6,7);
  2. foreach ($users as $user) {
  3. $bets = $em->getRepository('MyBetBundle:Bet')->findSomeBets($user);
  4. }


Kod w Modelu w klasie OfferRepository:

  1. public function findSomeBets($user)
  2. {
  3. $query = $this->getEntityManager()
  4. ->createQuery('
  5. SELECT o.id
  6. FROM My\BetBundle\Entity\Bet b
  7. WHERE (b.user = :user)
  8. ')
  9. ->setParameters(array('user' => $user));
  10. return $query->getArrayResult();
  11. }


Obecnie mam 5 zapytań a chciałbym jedno.

Chodzi mi o to żeby zapytanie zwróciło mi taką mniej więcej tablicę:

$newTable = array(2 => array(23,24,25,26),
3 => array(43,45,46,37),
5 => array(67,68,69,71)
);


dzięĸi

Ten post edytował damianooo 16.07.2013, 21:55:57
Go to the top of the page
+Quote Post
Crozin
post 16.07.2013, 22:13:12
Post #2





Grupa: Zarejestrowani
Postów: 6 476
Pomógł: 1306
Dołączył: 6.08.2006
Skąd: Kraków

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


  1. $em->createQuery('SELECT ... FROM My\BetBundle\Entity\Bet b WHERE b.id IN(:bids)')
  2. ->setParameter('bids', array(1, 2, 3, 4))
  3. ->getArrayResult();
?
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: 26.06.2025 - 03:13