Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [SF2][Symfony] - problem z pobraniem danych
damianooo
post
Post #1





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

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


Witam.

Mam następujące pytanie.

Mam dwie tabele:

Author i Books . Author jest w relacji "jeden do wielu" z Book (Autor może mieć wiele książek)

Chciałbym uzyskać tablicę wielowymiarową gdzie indeksy to będą author_id natomiast wartością będzie tablica z book_id , danego autora.

Coś takiego:

  1. $authorsBooks = array(
  2. 2 => array(23,24,25,26),
  3. 5 => array(31,32,33,34),
  4. 10 => array(41,42,43,44),
  5. itd.
  6. );


Jak pobrać książki dla każdego autora jednym zapytaniem żeby uzyskać taką tablicę jak powyżej ? Próbowałem to zrobić za pomocą QueryBuildera ale niewychodzi ?

Ten post edytował damianooo 3.08.2013, 18:43:43
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi
cadavre
post
Post #2





Grupa: Zarejestrowani
Postów: 472
Pomógł: 7
Dołączył: 7.12.2005
Skąd: Gliwice

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


SQL nie zwraca wielowymiarowych tablic z wynikami, więc bezpośrednio takiej formy nie otrzymasz.

  1. SELECT IDENTITY(u) as uid, IDENTITY(b) as bid
  2. FROM My\Test\Entity\Book b
  3. JOIN b.user u
  4. ORDER BY uid


Dalej w PHP w pętli:

  1. // Zakładając, że wyniki mamy w $results
  2. $output = array();
  3. foreach($results as $row) {
  4. $output[$row['uid']][] = $row['bid']
  5. }


W takim wypadku wykonujesz query z hydracją scalar a nie array.
(http://docs.doctrine-project.org/en/latest/reference/dql-doctrine-query-language.html#hydration-modes)

Mam nadzieję, że nic nie pomieszałem - pisane z głowy. : )
Go to the top of the page
+Quote Post

Posty w temacie


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

 



RSS Aktualny czas: 30.12.2025 - 05:37