Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: ORM ? ZEND_DB ? EZPDO ? PROPEL?
Forum PHP.pl > Forum > Gotowe rozwiązania
g00fy
Witam.
Problem lezy w tym ze nie za bardzo zaznajomilem sie z mnogimi systemami orm a chcial bym ktorys uzywac.
pytanie jest proste. Czy znacie jakis ORM ktory wspolpracowal by z PDO i obslugiwal takie rzeczy:
1) relacje wiele do wielu etc..
2) Obiekt nie musi byc wynikiem tylko jednej tabeli. -
  1. <?php
  2. class user{
  3. //podaje tutaj id i username i password
  4. ....
  5. //definjuje reszte pol jak data ostatniego logowania opis nazwisko etc ktore wszys
    tkie porozmieszczane sa do innych tabel
  6. ...
  7. //oczywiscie prosty interfejs z $obiekt->tytol=s; lub z setterami.
  8. ..
  9. //dobrze bylo by gdyby bylo cos w rodzaju mapperow ;]
  10. }
  11. ?>


oczywiscie rozumiem ze takie cos moze nie istniec , poprostu potrzebowal bym czegos co zalatwi moj problem jak najprosciej i efektywniej.

dalo by sie to wszystko zrobic w zend_db i propelu ale 1 jest nieprzystosowane do tego typu (przynajmniej nie znalazlem nic o relacjach w manualu) a propel ... heh.. wolal bym pdo ... (nie pytajcie dlaczego).
fajnie by bylo gdyby konfigurowalo sie to przy deklaracji klas a nie w xmlu:P

oczywiscie php5;]
dr_bonzo
Objrzyj http://www.phpdoctrine.com/ -- uzywalem tego dosc dawno, a projekt sie rozwinal od tego czasu i nie jestem na bierzaco.

Na pewno ma konfiguracje w php (kodzie klasy) nie xml'u, relacje, identity map, lazy loading (konfigurowalny). No i PDO uzywa.

Nie wiem jak jest z budowa obiektu z wielu tabel.
hwao
Specjalnie nie zapoznawałem się z tymi skryptami, ale co nieco mogę się wypowiedzieć. Musiałem zdobyć trochę doświadczenia, ponieważ niedawno napisałem swój ORM. Niestety jest on silnie zintegrowany z framework'iem.

Zend_db
To raczej abstrakcyjna warstwa dostępu do bazy danych, niż ORM. Mógłby on posłużyć jako szkielet do budowy jakiegoś ORM. Plusem Zend_db jest możliwość wykorzystania PDO.

Manual:
http://framework.zend.com/manual/en/zend.db.html

EzPdo
To już zdecydowanie ORM. Istnieje możliwość zintegrowania z Prado, stosunkowo łatwo. Posiada lepiej zaprojektowane relacje wiele do wielu w stosunku do Propel'a. Nie korzysta z PDO (nie jestem tego powiem), ale na pewno wykorzystuje adodb bądź też pear:db, jak kto woli.

Manual:
http://www.ezpdo.net/blog/2005/03/03/manual/

Propel
Chyba jeden z najbardziej zaawansowanych system ORM dla php. Wykorzystuje abstrakcyjna warstwę bazy danych Creole (napisana w PHP5). Dopiero od wersji 2.0 ma nastąpić zmiana dbLayer'a na PDO. Chyba najbardziej popularny ORM.

Manual:
http://propel.phpdb.org/docs/user_guide/index.html


Wszystkim możesz się przyjrzeć oglądając linki do manual'a i w końcu dokonać jakiegoś wyboru. Na koniec dodam jeszcze linka do listy systemów ORM dla php:
http://en.wikipedia.org/wiki/List_of_objec...ng_software#php
g00fy
Cytat(hwao @ 30.09.2006, 09:05:55 ) *
Specjalnie nie zapoznawałem się z tymi skryptami, ale co nieco mogę się wypowiedzieć. Musiałem zdobyć trochę doświadczenia, ponieważ niedawno napisałem swój ORM. Niestety jest on silnie zintegrowany z framework'iem.

Zend_db
To raczej abstrakcyjna warstwa dostępu do bazy danych, niż ORM. Mógłby on posłużyć jako szkielet do budowy jakiegoś ORM. Plusem Zend_db jest możliwość wykorzystania PDO.

Manual:
http://framework.zend.com/manual/en/zend.db.html

EzPdo
To już zdecydowanie ORM. Istnieje możliwość zintegrowania z Prado, stosunkowo łatwo. Posiada lepiej zaprojektowane relacje wiele do wielu w stosunku do Propel'a. Nie korzysta z PDO (nie jestem tego powiem), ale na pewno wykorzystuje adodb bądź też pear:db, jak kto woli.

Manual:
http://www.ezpdo.net/blog/2005/03/03/manual/

Propel
Chyba jeden z najbardziej zaawansowanych system ORM dla php. Wykorzystuje abstrakcyjna warstwę bazy danych Creole (napisana w PHP5). Dopiero od wersji 2.0 ma nastąpić zmiana dbLayer'a na PDO. Chyba najbardziej popularny ORM.

Manual:
http://propel.phpdb.org/docs/user_guide/index.html


Wszystkim możesz się przyjrzeć oglądając linki do manual'a i w końcu dokonać jakiegoś wyboru. Na koniec dodam jeszcze linka do listy systemów ORM dla php:
http://en.wikipedia.org/wiki/List_of_objec...ng_software#php



akurat te rozwiazania znam ,tylko poszukuje czegos innego - lepszego.

spodobalo mi sie to http://www.phpdoctrine.com/ , ale ma jedna wade. $obiekt->kolumna ... to nie jest zbyt poprawne gdy chcemy zapisac dane typu user(id,nazwa,haslo) do kolumn a,b,c ...

ciekawi mnie rozwiazanie uzycia zend_db do stworzenia orm, jak to widzicie?
nasty
Cytat
to nie jest zbyt poprawne

Czemu? NHibernate tak ma, calkiem mu dobrze jest z tym
a w php jest __set i __get
dr_bonzo
I chyba wystarczy napisac sobie mape:id <-> a, nazwa <-> b itd i w __get()/__set() sprawdzac co zostalo wywolane i przekierowac do tej drugiej nazwy
g00fy
sorry ze odswierzam ale mam pytanie dotyczace phpDoctrine ,
nie moge znalezdz sposobu zeby otrzymac id mojego obeiktu , moze inaczej :

  1. <?php
  2. $post = Zend::registry('post');
  3.  
  4. $user = new User;
  5.  
  6. $user->name=$post->getAlpha('name');
  7. $user->city=$post->getAlpha('city');
  8. $user->nick=$post->getAlpha('nick');
  9. $user->password=$post->getAlpha('password');
  10. $user->save();
  11. echo $user->get('id'); //tu nie otrzymuje zadnego id , tylko puste pole;/
  12. ?>


jak moge otrzymac id nowego usera. normalnie zrobil bym to przez lastInsertId
a tu ?
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-2024 Invision Power Services, Inc.