Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [SF]2 - Doctrine 2 - DQL - kilka JOINów + count()
Forum PHP.pl > Forum > PHP > Frameworki
peter13135
Pobieram posty z danego tematu takim zapytaniem :
  1. SELECT p, u FROM JakieśBundle:Post p JOIN p.user u WHERE p.parent = :thread GROUP BY p.id


Zapytanko działa.

Chciałbym teraz dołożyć do tego zapytanka informację na temat ile postów i tematów ma dany user. Kombinuję w ten sposób :
  1. SELECT p, u, count(nt), count(np) FROM JakieśBundle:Post p JOIN p.user u LEFT JOIN u.threads nt LEFT JOIN u.posts np WHERE p.parent = :thread GROUP BY p.id


Ale to zapytanie niestety nie chce działać:
Kod
Item "user" for "Array" does not exist in (...)index.html.twig at line 16

Kod
linia 16: {{post.user.username}}


Gdy wyrzucę count'y, czyli zostawię tak :
  1. SELECT p, u, nt, np FROM JakieśBundle:Post p JOIN p.user u LEFT JOIN u.threads nt LEFT JOIN u.posts np WHERE p.parent = :thread GROUP BY p.id


To wtedy elegancko działa. Ale czy to jest optymalne ? ja nie chcę pobierać wszystkich postów, które user napisał, tylko chce je "policzyć".
Crozin
Dlaczego liczby postów użytkownika nie trzymasz bezpośrednio w bazie danych (zmieniając jej wartość o jeden przy dodaniu/usunięciu postu)?
peter13135
Bo chcę to sobię zostawić "na potem" smile.gif Kiedyś pisałem forum "w czystym php bez frameworka" i zrobiłem tak jak mi radzisz.
Jednak teraz myślę, że na aktualny stan rzeczy wystarczy taka opcja jaką mam, a kiedyś tam się ją zoptymalizuje wink.gif.
Crozin
Ale dlaczego nie chcesz od razu zrobić tego poprawie, skoro będzie to prostsze i wygodniejsze w użyciu oraz zdecydowanie szybsze?
peter13135
Chciałbym po prostu wiedzieć, czemu mój przykład z count'ami nie chce działać wink.gif
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.