ugrás a tartalomhoz

Doctrine tapasztalatok?

vbence · 2008. Május. 11. (V), 14.33
Erről lenne szó:
http://www.phpdoctrine.org/

Szépen átgondolt, használható cuccnak tűnik. Van valakinek tapasztalata vele?
 
1

Van egy kicsi

Protezis · 2008. Május. 11. (V), 16.21
Mire vagy kivancsi? Egyebkent a cimet felreutotted.
3

Fejleszthetőség

vbence · 2008. Május. 11. (V), 17.00
Főleg olyasmi érdekelne, hogy mennyire támogatja a funkcionalitás kiterjesztését (belső API-ja mennyire jó). Úgymint saját mezőtipusok definiálása (ez nem úgy tűnik) vagy valami security manager (access control) beépítése. stb stb...
4

Van, de en meg nem hasznaltam

Protezis · 2008. Május. 11. (V), 18.30
Doctrine-ra epulo ACL megoldas: http://sensei-project.com/
"saját mezőtipusok definiálása" - ez nekem uj. Mire gondolsz?
5

ACL

vbence · 2008. Május. 11. (V), 19.26
Az access controlt úgy gondoltam, hogy pl:

$blogPost = Doctrine::getTable('BlogPost')->find(5);
$blogPost->delete();
Erre dobna egy kivételt, hogy a post nem a tied, azért nem is törölheted. (Léteznek-e olyan event-ek, metódusok, amiken keresztül megvalósíthatok egy ilyen funkcionalitást), vagy a doctrine elé (vagyis köré) kéne beépítsek valami saját réteget?

A saját tipus akármi lehet... pldául egy "intervallum" tipus, amit a relációs rétegben két mező testesít meg pl: mezonev_tol és mezonev_ig. Még szuperebb lenne, ha a saját tipus definiálhatna saját DQL függvényeket pl:
SELECT m.* FROM tevemusor m WHERE INTERSECT(m.intervallum, NOW())
vagy OO stlyusban (ami már szinte science fiction):
SELECT m.* FROM tevemusor m WHERE m.intervallum.CONTAINS(NOW())
6

Listener

Protezis · 2008. Május. 11. (V), 21.28
Ezt nezd meg. A preDelete() fuggveny automatikusan meghivodik, ha torolni akarsz a tablabol. Ebben egyszeruen megnezheted, hogy torolheto -e. Hasonlo dolgokat muvelhetsz lekerdezeskor is.

Ezen kivul hasznos meg a validator.

A sajat tipusrol nem tudok mast mondani, ugy valoszinuleg meg lehet oldani, hogy pl. a preInsert()-be, preUpdate()-be belerakod az ellenorzest (gondolom a Doctrine_Recordbol szarmazo osztalyokbol szinten lehet lekerdezeseket vegrehajtani)
7

Köszi

vbence · 2008. Május. 11. (V), 23.28
Határozottan ígéretes... rászánom az időt és alaposan kipróbálgatom.
2

Tudtommal

Drawain · 2008. Május. 11. (V), 16.37
Gyorsabb, stabilabb és jobban konfigolható mint a Propel, nem véletlen, hogy a Symfony frameworkben is egyre inkább ezt ajánlják. Mondjuk én még nem próbáltam ki, de teszteket láttam róla, és azok elég impresszívek voltak. A doksija hasonló a php-net-hez, vagyis lehet kommentelni az oldalak alján, így nekem már csak ezért is szimpatikusabb mint a többi :)
8

Még fejlesztés alatt van

hector · 2008. Május. 12. (H), 14.34
Volt már vele párszor problémám*, de még mindig ez a legjobb, amit eddig PHP-ben láttam. Meg fejlesztik is folyamatosan.

* postgres bytea mezők esetén volt problémám az escape-eléssel, illetve a nested set kezelése több fa esetén bugzott
9

gondok

waff · 2008. Júl. 1. (K), 16.51
Nekem egyenlore az nem tetszik, hogy az adatbazisbol generalt schema-ba nem teszi bele a kapcsolatokat(FK),
valamint a
group_concat(q.id SEPARATOR '|') as fq_ids
tipusu lekerdezes nem akar mukodni: Unknown aggregate alias: SEPARATOR
szoval eddig csak gondok vannak vele, ami persze valoszinuleg az en tudatlansagom miatt van...
10

group_concat

vbence · 2008. Júl. 2. (Sze), 12.29
A group_concat eredményét gondolom explode-dal aztán szétdarabolod egy tömbbe. A doctrine-féle hidratálás előnye pont az, hogy ezt moind megcsinálja helyetted. Amit groupconcatolnál azt megkapod már eleve egy al-konténerben (amit tömbként is elérsz).

A foreign keyt nem tudom... csak spekuláció, de lehet, hogy nem szűrhető le elég infó belőle, hogy egyértelműen felépíthető legyen belőle egy kapcsolat. A másik tipp, hogy olyan táblaformátumot (innodb?) használsz, ami egyszerűen nem rögzíti a FK-eket. (Így ezután már nem tudja az importáló modul feltérképezni őket). Próbáld kiadni rá:
SHOW CREATE TABLE tabla;
12

innodbben pont van FK

Hodicska Gergely · 2008. Júl. 2. (Sze), 17.24
Üdv,
Felhő
13

oké...

vbence · 2008. Júl. 2. (Sze), 17.31
akkor bármi, ami nem innodb :)
11

re: gondok

virág · 2008. Júl. 2. (Sze), 12.35
Szia,

itt olvashatsz a Doctrine foreign key elgondolásáról:

http://www.phpdoctrine.org/documentation/manual/0_11?one-page#relations:introduction

itt is találhatsz némi infót (magyarul):

http://groups.google.com/group/symfony-hu/browse_thread/thread/93c960174f58e179

itt pedig a group_concat-ról:

http://www.symforc.com/post/2007/10/28/Using-aggregate-functions-with-sfDoctrine

Remélem segít valamit!
14

rere gondok

waff · 2008. Júl. 3. (Cs), 13.04
Szia,

koszi a linkeket, de azokon mar tul vagyok :)
a group_concat-ot sikerult feleleszteni az utolso linken adott megoldassal, de a SEPARATOR-nal elszall a DQL.
vegulis Doctrine_Manager::connection()->fetchAll($query); megoldassal sikerult megkerulni a dolgot.
15

Kategorium

vbence · 2008. Aug. 3. (V), 13.15
Vicces: a "kategoria" táblából "Kategorium" objektumot gyártott :)

Kevésbé vicces, hogy a dokumentációból nem derül ki, hogy lehet kikapcsolni ezta funkciót, csupán az, hogy a következőt eltávolították:
Doctrine_Manager::getInstance()->setAttribute('singularize_import', false);
Kicsit utána járva az import.php-ben, azért megtalálható a mgeoldás, ami ez:
Doctrine::generateModelsFromDb('model', array (), array ('singularize' => false));
16

PHP verziók

vbence · 2008. Aug. 8. (P), 16.34
Újabb megjegyzés: a "for PHP 5.2.3+" szöveg komolyan veendő. Nekem 5.2.1-en segfault-okat csinált a PHP amég nem frissítettem. Nem nagyon figyeltem oda a dologra, csak próbából update-eltem egyet, aztán lőn...