Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> [SF]2 - Doctrine 2 - DQL - kilka JOINów + count()
peter13135
post 20.10.2012, 14:31:22
Post #1





Grupa: Zarejestrowani
Postów: 1 447
Pomógł: 191
Dołączył: 26.03.2008

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


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


--------------------
:)
Go to the top of the page
+Quote Post
Crozin
post 20.10.2012, 14:33:40
Post #2





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

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


Dlaczego liczby postów użytkownika nie trzymasz bezpośrednio w bazie danych (zmieniając jej wartość o jeden przy dodaniu/usunięciu postu)?
Go to the top of the page
+Quote Post
peter13135
post 20.10.2012, 14:42:28
Post #3





Grupa: Zarejestrowani
Postów: 1 447
Pomógł: 191
Dołączył: 26.03.2008

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


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.

Ten post edytował peter13135 20.10.2012, 14:45:26


--------------------
:)
Go to the top of the page
+Quote Post
Crozin
post 20.10.2012, 15:44:41
Post #4





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

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


Ale dlaczego nie chcesz od razu zrobić tego poprawie, skoro będzie to prostsze i wygodniejsze w użyciu oraz zdecydowanie szybsze?
Go to the top of the page
+Quote Post
peter13135
post 20.10.2012, 15:46:22
Post #5





Grupa: Zarejestrowani
Postów: 1 447
Pomógł: 191
Dołączył: 26.03.2008

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


Chciałbym po prostu wiedzieć, czemu mój przykład z count'ami nie chce działać wink.gif


--------------------
:)
Go to the top of the page
+Quote Post
Crozin
post 20.10.2012, 16:12:35
Post #6





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

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


http://docs.doctrine-project.org/projects/...d-mixed-results
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: 21.06.2025 - 16:00