Jej wycinek wygląda tak, że są Kategorie produktów, które mają pole "parent". Pole to jest połączone relacją ManyToOne po polu id z inną Kategorią.
Nie potrafię rozkminić w Doctrine zapytania, które poda mi wszystkie kategorie, które mają w polu "parent" Kategorię o np. id=1.
Czyli jestem na stronie Kategoria 1 i chce wyświetlić wszystkie kategorie jej podlegające.
Jeśli nie muszę to staram się unikać DQL i wykorzystywać metody dostępne z poziomu repozytorium.
Czy jest sposób, abym tak określił kryteria wyszukania, żeby pobrać tylko te kategorie? Nie chcę pobierać wszystkich i filtrować, bo za dużo czasu to zajmie.
@Jurigag: Ale one zwracają encje, a zwykłe zapytanie nie zwróci przypadkiem tablicy? Wtedy cały ORM przestaje mieć chyba sens tak z grubsza, bo szybciej i łatwiej mi napisać w sumie SQL niż bawić się w te ichnie DQL czy cokolwiek.
@anonim1133: zwróci encje :P przecież właśnie po to jest doctrine i dql żeby zwracało obiekty ^^ możesz dodać specjalną flagę żeby zwracało tablicę - przydatne jak mamy tylko to wyświetlać i nie zmieniać nic czyli np do widoków jak mamy to tylko wyświetlić to niepotrzebne nam obiekty bo np w twigu i do obiektu i do tablicy tak samo się odwołuje po kropce, w dodatku hydracja czyli właśnie zmienianie tablicy
@anonim1133: jeszcze zawsze możesz korzystać z queryBuildera, powinien byś szybszy niż repozytorium ;p partiale są potrzebne jak chce się załadować informacje z obiektu który ma relacje z innymi tj np mam obiekt zamówienie i obiekt produkt, i chcę znać tylko nazwę produktu z mego zamówienia to wtedy mogę zastosować partial i nie muszę pobierać wszystkiego z zamówienia i nadal mam normalne obiekty np lub tablice
@Jurigag: Wykop uczy, wykop bawi! Na razie... Używam wszystkiego po trochu. Surowy SQL, queryBuilder, repozytoria. Jak mi wygodniej, w zasadzie odkrywam kolejno, zgodnie z zapotrzebowaniem.
Jej wycinek wygląda tak, że są Kategorie produktów, które mają pole "parent". Pole to jest połączone relacją ManyToOne po polu id z inną Kategorią.
Nie potrafię rozkminić w Doctrine zapytania, które poda mi wszystkie kategorie, które mają w polu "parent" Kategorię o np. id=1.
Czyli jestem na stronie Kategoria 1 i chce wyświetlić wszystkie kategorie jej podlegające.
Jeśli nie muszę to staram się unikać DQL i wykorzystywać metody dostępne z poziomu repozytorium.
Czy jest sposób, abym tak określił kryteria wyszukania, żeby pobrać tylko te kategorie?
Nie chcę pobierać wszystkich i filtrować, bo za dużo czasu to zajmie.
#symfony #php #bazydanych #programowanie #pytanie
https://github.com/Atlantic18/DoctrineExtensions/blob/master/doc/tree.md
źródło: comment_rOnUEt41wcDYpvIA4gor3yPPOKTaI7PH.jpg
Pobierzjak chcesz potomków potomków również, to bez bardziej skompilowanych zapytań się nie obejdzie
poszukaj w google:
symfony tree
managing hierarchical data in mysql
Categoryzdefiniuj relację do podkategorii (one to many self-reference). Będziesz się mógł dobrać przez zwykłego gettera:$category->getSubcategories();https://doctrine-orm.readthedocs.org/en/latest/reference/association-mapping.html#one-to-many-self-referencing
Będziesz miał wtedy dwa zapytania:
1. Pobranie pojedynczej encji
Category–@Jurigag: Teraz mówisz? A zaczynałem się dobrze z nimi dogadywać...
W sumie wydają się dość wygodne i całkiem przyjemne.
tutaj trochę więcej innych rzeczy: http://www.uvd.co.uk/blog/some-doctrine-2-best-practices/ i to też: http://labs.octivi.com/mastering-symfony2-performance-doctrine/
Wtedy cały ORM przestaje mieć chyba sens tak z grubsza, bo szybciej i łatwiej mi napisać w sumie SQL niż bawić się w te ichnie DQL czy cokolwiek.
@Jurigag: Brzmi mądrze, ale ani słowa :D
Cóż, wszystko przyjdzie z czasem. Będę musiał też zrewidować swoją wiedzę na temat dql w takim razie ;)
Na razie... Używam wszystkiego po trochu. Surowy SQL, queryBuilder, repozytoria. Jak mi wygodniej, w zasadzie odkrywam kolejno, zgodnie z zapotrzebowaniem.