mimol
7.02.2013, 21:16:53
Witam.
Mój kontroler
$em = $this->getDoctrine()->getManager();
$entity = $em->getRepository('MyMoviesBundle:Category')->findOneBySlug($slug);
$movies = $entity->getMovies();
Jak sortować elementy w $movies? Nie mogę używać adnotacji w Movies Entity, ponieważ raz chcę sortować wg nazwy, a raz wg ID.
W modelu Category stwórz metody typu:
getMoviesSortedBy...()
i w nich do sortowania użyj Criteria API:
http://docs.doctrine-project.org/en/latest...ing-collections
mimol
7.02.2013, 23:35:23
Wielkie dzięki, jednak to jest to co chcę osiągnąć.
Używając Criteria API do bazy leci dodatkowe zapytanie, czy jest jakaś możliwość aby żadne dodatkowe zapytanie nie było dodawane do bazy?
Coś jak order w adnotations tylko że dynamiczne?
Crozin
7.02.2013, 23:41:48
W takim wypadku zmuszony będziesz skorzystać z DQL-a i w nim jawnie określić kolejność zwracanych rekordów (ORDER BY).
mimol
7.02.2013, 23:43:25
Crozin
mógłbyś to mi wytłumaczyć/ podesłać jakiś link?
Masz na myśli Pobranie Entity używając DQL napisanego tak, aby zwracał od razu posortowane elementy?
Jeśli tak, to czy znasz jakieś dobre strony z toturialem do DQL opisującego relacje (oprócz oficjalnej strony Doctrine)?
Crozin
8.02.2013, 00:09:39
@mimol: A w oficjalnej dokumentacji czegoś brakuje w temacie DQL-a i relacji?
mimol
8.02.2013, 02:13:17
hmm, w oficjalnej wersji to nie jest tutorial.
Znajac SQL'a, cięzko jest mi napisać joiny, łatwiej się tego uczyć na jakiś przykładach dobrze omówionych.
Dla mnie za mało jest przykładów, nie wszystko mogę napisać, a żeby coś odniosło pożądany skutek muszę nad tym długo siedzieć (metoda prób i błędów).
Jeśli była by strona z poradnikiem jak używać Query buildera, wraz z przykładami było by mi łatwiej.
Cytat(mimol @ 7.02.2013, 23:35:23 )

Wielkie dzięki, jednak to jest to co chcę osiągnąć.
Używając Criteria API do bazy leci dodatkowe zapytanie, czy jest jakaś możliwość aby żadne dodatkowe zapytanie nie było dodawane do bazy?
Coś jak order w adnotations tylko że dynamiczne?
Tak, jest lazy loading więc do bazy poleci dodatkowe zapytanie (gdy tej kolekcji jeszcze nie załadowaleś do pamięci). Jak kolekcja juz jest w pamieci to nie leci wtedy żadne dodatkowe zapytanie.
mimol
8.02.2013, 11:07:30
@ano
Więc, jeśli stworze zapytanie, które pobiera Cateogry wraz z odpowiadającymi filmami i następnie użyje Criteria API, będzie tylko 1 zapytanie leciało do bazy?
Tak.
Ale czy nie łatwiej samemu to sprawdzić?
mimol
8.02.2013, 15:06:41
Nie za dobrze potrafię SQL/DQL, więc jeśli mam się męczyć cały dzień, to chciałbym wiedzieć czy jest po co=)
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.