Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [CodeIgniter][Dosctrine 2 ] zapytania
Forum PHP.pl > Forum > PHP > Frameworki
angel170
Witam od paru dni przeglądam manuala do Doctrine 2 ORM 2.2 zaimplementowałem zgodnie z maualem go do CI i mam pytanie tak naprawde istnieje pare "metody" np pobierania danych z bazy:
1. $user = $em->createQuery($dql)->getResult()
2. $user = $em->find("User", $id);
3. $user_r = $em->getRepository('User')
4.
$qb = $em->createQueryBuilder();
$qb->select('u')->from('User', 'u')

Mam pytanie kiedy którcyh poleceń powinienem używać ?

piotr.pasich
Odpowiedź: Najlepiej korzystać ze wszystkich, ale każdy nadaje się lepiej do czego innego. Przedstawiam listę w kolejności użytkowania wg. mnie najlepszej. Przechodzisz przez kolejne punkty - jeżeli czegoś nie da się pobrać przez $this->find idziesz do query buildera, jak czegoś nie znajdziesz w query builderze - idziesz do dqla. Jednak wszystkie te operacje najlepiej wykonywać w repozytorium (no może poza ->find)

Pobiera usera po id - przypadek najprostrzy:
  1. $user = $em->find("User", $id);


Query builder jest dużo częściej wykorzystywany do zapytań niż dql - łatwiejszy i czytelniejszy. Łatwo jest w nim joinować budując skomplikowane obiekty
  1. $qb = $em->createQueryBuilder();
  2. $qb->select('u')->from('User', 'u')


Do trudniejszych zapytań z joinami - tak na prawdę powinno się to znajdować w repozytorium, a na pewno nie w kontrolerze:
  1. $user = $em->createQuery($dql)->getResult()



Repozytorium jest do przechowywania metod pobierania i pracy na danych z bazy. Najlepiej jest tam dorzucić metody pobierające użytkowników wg konkretnych warunków, w innych repozytoriach pobierasz z tego np. artykuły dla użytkownika z tagami (przez zdeklarowane przez siebei metody)
  1. $user_r = $em->getRepository('User')


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.