Model vs. db tabuly
- lovec
- Člen | 13
Zdravím, můj dotaz není úplně k nette, možná spíš k návrhu
modelu.
Můj problém je takový:
Mám db tabulku tab1 a k ní vytvořený model, který ji obsluhuje. Mám ale
další tabulku tab2, která je s tab1 ve vazbě 1:1, jedná se v podstatě
o rozšíření.
Měl jsem představu, že když mám model k tab1, vytvořím potomka, který domapuje hodnoty z tab2. Pak mě ale došlo, že insert, update, atd. budu muset udělat v druhém modelu všechny nově, protože data přichází v jednom poli. Tak si říkám, jestli nebude lepší pro oba udělat samostatný model, aniž by k sobě měly vazbu.
Jak řešíte takovéto situace?
Díky
- srigi
- Nette Blogger | 558
Vo vseobecnosti sa to riesi pomocou takej kolacovej schemy
Na samom vrchu je objekt, ktory pracuje so samotnou tabulkou. Pod touto
vrstvou je tzv. DataMapper, ktory obsluhuje prepojenie tabuliek. Zvonka
poskytuje API typu fetchAll() a on uz na zaklade svojej logiky vrati
kompetizovany resultset. Service layer je potom uz to k comu pristupuje
Presenter cez API typu $user->setBlocked(true)
alebo
$user->getContact()
.
Podrobne sa o tom ropisal nejaky DragonBe, sice je to o Modeloch v ZF ale da sa tam najst ako je ten DataMapper porieseny. V podstate vymenis jeho Zend_Db_Table, ktore sedia na najvyssom bode toho kolaca za svoje DB_table handler objekty.
Dalsia moznost je vykaslat sa na taketo „kraviny“ a pouzivat poriadne ORM
- vlki
- Člen | 218
Tesat do kamene!
Pěkný úvod do vrstvovaného modelu a DataMapperu jsou slajdy z přednášky Matthewa Weiera O'Phinneyho, jednoho z hlavních vývojářů Zend Frameworku.