Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [SF][SF2]Sortowanie ArrayCollection
Forum PHP.pl > Forum > PHP > Frameworki
mimol
Witam.
Mój kontroler
  1. $em = $this->getDoctrine()->getManager();
  2. $entity = $em->getRepository('MyMoviesBundle:Category')->findOneBySlug($slug);
  3. $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.
ano
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
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
W takim wypadku zmuszony będziesz skorzystać z DQL-a i w nim jawnie określić kolejność zwracanych rekordów (ORDER BY).
mimol
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
@mimol: A w oficjalnej dokumentacji czegoś brakuje w temacie DQL-a i relacji?
mimol
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.
ano
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
@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?
ano
Tak.
Ale czy nie łatwiej samemu to sprawdzić?
mimol
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.
Invision Power Board © 2001-2025 Invision Power Services, Inc.