Vrstvy modelu – zejména fasáda a repositář
- vosik199
- Člen | 6
Zdravím,
Omlouvám se že znovu otravuju, ale mám trošku guláš v těch pěti
vrstvách modelu.
V nějaké diskusi zde jsem četl, že entita se dá považovat jako vracený
výsledek u Nette\Database, je to správně?
Nějak teď netuším jak rozdělit repositář a fasádu.
Mám např.
PostsRepository
public function findByCountAndOrLimit($count, $offset = NULL) {
return $this->selectTable()->limit($limit, $offset)->order('created')->fetchAll();
}
PostsFacade
public function getPostsByCountAndOffset($count, $offset = NULL) {
return $this->postsRepository->findByCountAndOrLimit($count, $offset);
}
Díky všem za odpovědi :)
- Šaman
- Člen | 2666
Když s tím zacínáš, tak repository a fasádu nerozděluj. Není to nutné, všechny dotazy jsou v repository, dokud se ti ta třída nepřeroste. A až přeroste, tak už bys měl mít trochu jasno v tom, co je nativní záležitost repozitáře a co je spíš nadstavba, která se dá vyčlenit do fasády (nebo i více fasád).
A jinak vrácený výsledek není entita. Stejně jako entitou není pole dat načtených z db. Ale pokud o entitě uvažuješ jen jako o hloupé přepravce na data, pak ti opravdu stačí DibiRow, výsledek z NDb, nebo i to pole. Ale žádnou další logiku pak entitu nenaučíš. (Řekněme, že máš v db uložené kružnice – střed a poloměr. Pravá entita by mohla vracet i vypočtený obsah a obvod, zatímco hloupá přepravka (pole, nebo objekt result) ti vrátí jen ten poloměr.)