Tematy na forum Pro mogą zakładać jedynie moderatorzy. W otwartych tematach może pisać każdy, kto ma coś fachowego do powiedzenia. Wszystkie posty nie wnoszące nic do tematu będą natychmiast usuwane, a ich autorzy dostaną ostrzeżenie.
Jeśli uważasz, że jakiś temat jest warty dyskusji na tym forum, zgłoś go w temacie Propozycje.
Post
#1
|
|
|
Grupa: Przyjaciele php.pl Postów: 790 Pomógł: 7 Dołączył: 6.02.2003 Skąd: Polska Ostrzeżenie: (0%)
|
Na początek po reorganizacji forum chcielibyśmy zaproponować wam temat dotyczący mapowania tabel z baz danych na obiekty w PHP.
|
|
|
|
![]() |
Post
#2
|
|
|
Grupa: Przyjaciele php.pl Postów: 384 Pomógł: 6 Dołączył: 11.09.2004 Skąd: Grodzisk Mazowiecki Ostrzeżenie: (0%)
|
To może ja coś skrobnę od siebie, o moich doświadczeniach z ORM, a konkretnie z Doctrine. Obok wcześniej wspominanego Propela jest to jedeno z najpopularniejszych narzędzi tego typu. Doctrine przeciwieństwie do Propela nie generuje żadnego kodu. Oraz właściwie nie uwalnia nas do końca od pisania SQL. Jednak MASYMALNIE go uprasza i przyśpiesza. Mianowicie, w Doctrine definuje się każdą tablę np. tak (przykłady będą z dokumentacji)
W metodzie setUp ustawia się relacje do innych Rekordów (czyli klas "odpowiadających" tabelom w db). Przykładowe wyciąganie z bazy danych wygląda tak:
Gdzie zamiast nazw tabel podaje się nazwy rekordów. To jest właśnie DQL - Doctrine Query Language. Zapytanie zostaje parsowane do zwykłego zapytania SQL a następnie zostaje zwrócona tablica z obiektami rekordów wcześniej zadeklarowanych. Wreszcie możemy zapomnieć o babraniu się z wyciąganiem danych zwróconych przez zapytanie. Wystarczy takie zapytanie jak powyżej i mamy wszystko z głowy. Dostajemy tablicę z ładnymi obiektami. DQL dodatkowo oferuje inne możliwości jak np. INDEXBY. Gdyby jednak okazało się że nie da rady wykonać zapytanie przez DQL. Mamy wtedy 2 możliwości. Użyć Doctrine_RawSql, gdzie piszemy właściwie normalne zapytanie, a na końcu podpinamy obiekty. Albo możemy po prostu z Doctrine wziąć obiekt PDO i użyć go jak za starych (dobrych) czasów (IMG:http://forum.php.pl/style_emoticons/default/winksmiley.jpg) Ja jak narazie tylko raz użyłem RawSql, a PDO? Szczerze to już nie pamiętam jak się z tego korzysta (IMG:http://forum.php.pl/style_emoticons/default/winksmiley.jpg) Tyle jeżeli chodzi o wyciąganie. Tworzenie i update rekordów jest również banalny i oczywiście odbywa się przez obiekty rekordu. Dodatkowo Doctrine posiada kilka pluginów które są naprawdę bardzo użyteczne i przydatne. Po więcej informacji odsyłam do dokumentacji. Zaraz padną głosy że doctrine to krowa. Owszem, trochę to wszystko waży. Jeżeli chodzi jednak o wydajność nie poczułem żadnych niedogodności, więc to wszystko mi odpowiada (kolega mówił że jeden projekt składający się z 35 tabel napisał na doctrine (IMG:http://forum.php.pl/style_emoticons/default/smile.gif) . Projekt się szybko rozwija. Autorzy zapowiadają że niedługo pojawi się nowa wersja z nowym parserem DQL, który ma być szybszy, chyba ma posiadać nawet jakieś nowe możliwości. Generalnie, polecam Doctrine. Warto zainteresować się tym ORM. |
|
|
|
seaquest ActiveRecord, ORM 19.03.2007, 12:58:19
Sh4dow czy czegos podobnego nie robi propel ? Bardzo ciek... 19.03.2007, 13:36:04
athabus Moje doświadczenia z klasami tego typu są dość mał... 19.03.2007, 14:02:56 
mike_mech Cytat(athabus @ 19.03.2007, 14:02:56 ... 19.03.2007, 14:15:21 
Yacho Cytat(athabus @ 19.03.2007, 15:02:56 ... 14.05.2007, 18:00:11
Sh4dow Nie znam framework'a zend'a ale propel dzi... 19.03.2007, 14:12:36
athabus Propela jeszcze nie próbowałem, ale z przykładów, ... 19.03.2007, 14:30:13
splatch Cytat(Sh4dow @ 19.03.2007, 13:36:04 )... 19.03.2007, 23:18:38
ActivePlayer A ja sobie napisałem swoją klasę (swego czasu opis... 20.03.2007, 00:09:17
nospor Ja mam podobnie (tak mi sie wydaje) jak ActivePlay... 20.03.2007, 08:13:36
Sh4dow No to robisz prawie tak samo jak propel, Tylko ze ... 21.03.2007, 10:18:24
nospor CytatJedyne co mnie martwi to wydajność której chy... 25.03.2007, 20:14:56
splatch Pragnę nadmienić, że w przypadku Propela nie trzeb... 27.03.2007, 21:59:00
Sedziwoj Może się wyda dziwne pytanie, ale czy obiekt nie m... 28.03.2007, 00:25:53 
splatch Cytat(Sedziwoj @ 28.03.2007, 01:25:53... 31.03.2007, 11:03:35
Hacker Eeeee...
@Sedziwoj czy mi się zdaje czy mówisz o l... 29.03.2007, 18:43:47
Sedziwoj Ja piszę to co myślę, tak kochane 'wzorce proj... 29.03.2007, 23:11:06
pawel_k @splatch - nie do konca dobry przyklad
pobierajac ... 26.04.2007, 14:16:59
cicik Mnie przed ORMami odstrasza jedna rzecz.
Jeżeli ma... 27.04.2007, 09:15:45 
g00fy Cytat(cicik @ 27.04.2007, 08:15:45 ) ... 21.07.2007, 23:55:44
athabus Nie wiem jak to jest w innych ORM'ach ale właś... 27.04.2007, 10:09:51
dr_bonzo Nie, chocby w Railsach masz :include => 'gr... 27.04.2007, 10:10:38
athabus Yacho nie dość, że cytujesz moją wypowiedź sprzed ... 14.05.2007, 21:27:35
Sokal Myślę sobie teraz o ORM...
Według ... 23.05.2007, 17:57:58
menic Jestes w błedzie Misiu (a moze pingwinku;) )
Złozo... 23.05.2007, 18:05:32
Sokal A co powiesz na to, że piszesz jaką... 23.05.2007, 18:11:20
bela Cytat// I jeszcze jeden argument:
Przez ORM kod ap... 23.05.2007, 19:22:15
menic No to zaczynamy:
Sam AR moze i jest trudniejszy i ... 23.05.2007, 19:31:18
Sokal Dla mnie to zawsze będzie niewygnodne, co z tego, ... 23.05.2007, 20:04:59 
splatch Cytat(Sokal @ 23.05.2007, 21:04:59 ) ... 24.05.2007, 12:04:35
menic Co z tego? Np. to ze nie musisz pamietac nazw wszy... 23.05.2007, 20:07:08
webik Witam
Ot dorzuce swoje 3 grosze.... Osobiście uży... 24.05.2007, 00:19:43
mike ~Sokal a dlaczego uważasz że ORM jest dl... 24.05.2007, 11:52:32
athabus splatch ty jakiś agresywny ostatnio jesteś
Sok... 26.05.2007, 18:27:32
eai Nie ukrywam, temat dość ciekawy.
Nie wiem jednak ... 31.05.2007, 14:10:14 
splatch Cytat(eai @ 31.05.2007, 15:10:14 ) Mo... 31.05.2007, 17:40:38 
splatch Cytat(splatch @ 31.05.2007, 18:40:38 ... 6.07.2007, 07:48:08
nasty Witam,
Chciałbym się odnieść do wypowiedzi paru os... 2.06.2007, 13:28:42
Sokal Chyba mnie przekonaliście do ORM-a
Propel je... 12.06.2007, 17:33:19
Martio Jakie znacie lub macie u siebie zaimplementowane s... 6.07.2007, 01:05:47
SongoQ Takie cos jest w ORMach zaimplementowane. Patrz np... 6.07.2007, 01:15:01
NuLL lub w phpDoctrine 6.07.2007, 01:17:38
XvZOK A jak Propel radzi sobie z dziedziczeniem w klasac... 30.07.2007, 15:53:15 
Sedziwoj Cytat(XvZOK @ 30.07.2007, 16:53:15 ) ... 31.07.2007, 18:56:32 
splatch Cytat(XvZOK @ 30.07.2007, 16:53:15 ) ... 31.07.2007, 20:14:53
XvZOK Ponownie wróciłem do tematu.
Widzę, że tutaj nie z... 27.11.2007, 00:15:41
athabus Myślę, że o widoku nikt nie wspomniał, bo temat ni... 27.11.2007, 10:59:33
splatch Kwestia ORM i widoku nie wiąże się ... 27.11.2007, 11:55:44
Martio Używam Zend Frameworka. Chciałbym oddzielić warstw... 26.02.2008, 00:54:43 
Martio Cytat(Martio @ 26.02.2008, 02:54:43 )... 28.02.2008, 18:36:04
regis87 Testowałem różne dostępne rozwiązania ORM, najlepi... 26.02.2008, 20:05:52
Sedziwoj @regis87
I moim zdanie się mylisz, jak jest duży ... 27.02.2008, 10:37:16
Cysiaczek W 100% popieram. Za całą obiektową otoczką takiego... 27.02.2008, 10:52:09
splatch Może w kwestii dużych projektów. Panowie nie zapom... 27.02.2008, 12:09:19
regis87 Może źle to ująłem. Mówiąc o dużych projektach nie... 27.02.2008, 17:22:42
Cysiaczek W przypadku Propela masz kilka plików + te, które ... 27.02.2008, 17:27:41
regis87 Nie potrafię tego oszacować. Ale kiedy wydajność s... 27.02.2008, 17:55:22
Cysiaczek Jeśli dysponujesz dedykowanym serwerem, to moim zd... 28.02.2008, 00:47:10
menic @up: TAK 28.02.2008, 18:40:32
regis87 Skończyłem testy, pork.dbObject. Jest im... 2.03.2008, 22:49:39
Sedziwoj Cytat$users[0] -> Phonenumber -> number... 15.03.2008, 08:49:26
Strzałek CytatCzyli mam rozumieć, że on korzysta z stdClass... 15.03.2008, 11:33:06
athabus Doctrine nie używałem więc trudno mi porównać pros... 15.03.2008, 12:31:26
Cysiaczek Nie używałem Doctrine, ale Propela owszem i rzeczy... 15.03.2008, 13:16:35
athabus No niestety sama wydajnośc propel to nie do końca ... 15.03.2008, 13:28:09
destroyerr Więc Doctrine ma możliwość definiowania schematu w... 15.03.2008, 13:37:16
splatch Jeśli idzie o szybkość Propela w wersjach <= 1.... 15.03.2008, 14:25:39
Sedziwoj Do tego skomplikowane zapytania można oprzeć na wi... 15.03.2008, 17:42:22
Strzałek CytatWadą, którą widzę w Doctrine j... 15.03.2008, 18:28:52
Sedziwoj @Strzałek tylko powiedz w czym to jest lepsze od P... 15.03.2008, 19:49:46
Cysiaczek Uh, jak mówiłem - nie używałem Doctrine. Jak jest ... 15.03.2008, 20:26:32 
Sedziwoj Cytat(Cysiaczek @ 15.03.2008, 20:26:3... 15.03.2008, 21:21:59
Cysiaczek Oj tam
Mi podpowiadanie składni w eclipse działa... 15.03.2008, 22:22:26
Sedziwoj Cytat(Cysiaczek @ 15.03.2008, 22:22:2... 16.03.2008, 00:33:42 ![]() ![]() |
|
Aktualny czas: 21.11.2025 - 11:03 |