V necem zasadnim chapu model Entity-Mapper, dochazi k zacykleni na urovni mapperu, prosim o nakopnuti
Upozornění: Tohle vlákno je hodně staré a informace nemusí být platné pro současné Nette.
- zac24
- Člen | 41
? jak resite nasledujici problem se zacyklenim v modelu Entity<->Mapper ?
. Mam entity Spisovatel a Kniha
. Dale mam mappery SpisovatelMapper a KnihaMapper
. pokud zavolam Spisovatel1 = SpisovatelMapperInstance->najdi(1)
- dostanu entitu Spisovatele, nalezeneho v databazi podle id
. pokud nasledne zavolam Spisovatel1->vratKnihy
- je uvnitr eneity zavolana metoda ktera overi zda uvnitr entity je v privatni metode ulozen mapperKnih a pokud ano, vrati de fakto vysledek KnihyMapper->najdiPodleSpisovatele($this->vratId()) coz vrati jako kolekci entit Kniha
- to se zda v poradku, problem je s konstruktory v mapperech, ty pochopitelne dostavaji databazove pripojeni a hned si v ramci privatnich vlastnosti zalozi v sobe sama i dalsi mappery se kterymi bude nutne predavat do entit, aby vyse uvedene fungovalo, a tady se i pochopitelne aplikace zacykli, protoze SpisovatelMapper v konstruktoru zaklada KnihaMapper a pri jeho zakladani se vola zas jeho konstruktor ktery si do privatnich vlastnosti zaklada naopak SpisovatelMapper, … a tak stale dokola. To neni uplne dobre reseni zda se. Pritom je zrejme nutne aby mappery drzely sve instance navzajem, kdyz tak mne opravte, pokud chci mit k dispozici metody SpisovatelMapperInstance->vratSpisovateleKnihy($kniha) a soucasne KnihaMapperInstance->vratKnihySpisovatele($spisovatel)
- neco je zrejme v me uvaze velmi spatne, prosim o nakopnuti, nejspis Entity Mapper model v necem zasdnim chapu spatne
- Filip Procházka
- Moderator | 4668
Nebylo by lepší nepsat vlastní ORM, ale použít nějaké existující?
- Doctrine s kdyby/doctrine (moje osobní preference)
- nextras/orm (novinka od @hrach)
- Tharos/LeanMapper (jednu dobu hrozně populární, ale poslední dobou je ticho a sám autor používá převážně Doctrine)
Prakticky cokoliv z toho je lepší než znovu vynalézat kolo :)