![]() |
![]() |
![]()
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:
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 |
|
|
![]() |
![]()
Post
#2
|
|
![]() Grupa: Zarejestrowani Postów: 915 Pomógł: 210 Dołączył: 8.09.2009 Skąd: Tomaszów Lubelski/Wrocław Ostrzeżenie: (0%) ![]() ![]() |
Musisz "zjoinować" te tabele, ale później i tak musisz wynik pętlą w PHP "przerobić", aby otrzymać taką postać jaką chcesz.
-------------------- |
|
|
![]()
Post
#3
|
|
Grupa: Zarejestrowani Postów: 496 Pomógł: 2 Dołączył: 15.07.2011 Skąd: Katowice Ostrzeżenie: (0%) ![]() ![]() |
ok, zjoinowałem i mam tak w query builderze:
Natomiast w Kontrolerze tak:
Jak teraz zgrupować te wyniki aby wynik był taki jak oczekuję ? Ten post edytował damianooo 3.08.2013, 23:18:39 |
|
|
![]()
Post
#4
|
|
![]() 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.
Dalej w PHP w pętli:
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. : ) -------------------- Silesian PHP User Group - www.spug.pl
Symfony2, OAuth2, budowanie API - masz pytania? Pisz! |
|
|
![]()
Post
#5
|
|
Grupa: Zarejestrowani Postów: 496 Pomógł: 2 Dołączył: 15.07.2011 Skąd: Katowice Ostrzeżenie: (0%) ![]() ![]() |
Wielkie dzięki ... działa pięknie tak jak napisałeś ten przykład. U mnie to będzie tak:
W BookRepository:
natomiast w kontrolerze tak:
Jeśli chodzi o tą opcję HYDRATION_SCALAR to próbowałem z tym ale wywala błąd:
Pewnie trzeba dodać odpowiednią przestrzeń nazw. Jednak tak bardzo na razie tego nie potrzebuję. Dzięki jednak za podpowiedź, że jest taka opcja. (trzeba więcej dokumentacje czytać ![]() Dzięki, Pozdrawiam Ten post edytował damianooo 5.08.2013, 08:48:33 |
|
|
![]() ![]() |
![]() |
Aktualny czas: 22.08.2025 - 10:07 |