Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [CodeIgniter][Dosctrine 2 ] zapytania
angel170
post
Post #1





Grupa: Zarejestrowani
Postów: 16
Pomógł: 0
Dołączył: 15.04.2012

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


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ć ?

Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi (1 - 1)
piotr.pasich
post
Post #2





Grupa: Zarejestrowani
Postów: 27
Pomógł: 4
Dołączył: 27.01.2012
Skąd: Gliwice

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


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')




--------------------
Zapraszam do głosowania na agendę PHPCon Poland 2013 http://www.phpcon.pl/2013/pl/agenda.

---
Piotr Pasich
piotr.pasich@xsolve.pl
www.xsolve.pl
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 Aktualny czas: 21.08.2025 - 14:17