Správne použitie Repository/Presenter pri objekte z viacerých tabuliek

Upozornění: Tohle vlákno je hodně staré a informace nemusí být platné pro současné Nette.
Danndy
Člen | 35
+
0
-

Zdravím.

Z nette som začal len pred nedávnom, tak sa radčej spýtam ako by som mal niečo odzačiatku robiť zle.

Na webe budem zobrazovať obsah (hru) pri ktorej zobrazím aj komentáre k tejto hre, hodnotenia uzivaletov ktorý tuto hru hodnotili a taktiež hodnotenie uživatela ktorý je prihlásený. Takže je mi jasne že budem mať GamePresenter a GameRepository. Ale neviem kde mam implementovať funkcie ktoré mi vrátia komentáre a hodnotenia k danej hre. Ako je najvhodnejsie riešiť takúto „štruktúru“ ? Mám vytvoriť CommnetRepository a RatingRepository a v nich mať jednotlivé funkcie? Bolo by vhodne máť aj objekt Game ako schránku pre data sktorými budem pracovať?

Bol by som vdačny keby mi niekto skuseny aspoň načrtol ako isť na takúto vec.

Vopred ďakujem za odpoveď.

Tomáš Kolinger
Člen | 136
+
0
-

Tak Nette je postaveno na architektuře MVC.

M je model. Tj. tvoje Repository. Všechno co tahá či nějak manipuluje s daty bude tam.
V je view, pohled. Tedy .latte šablona. Tam patří logika na výpis.
C je controller, resp. presenter. Tam zavoláš potřebné služby (model) a získaná data předáš šabloně.

Takže funkce která vrátí komentáře? CommentRepository->findByGame($gameId). To zavoláš v presenteru a předáš šabloně a to je celé.

U Game nevím co tam bude za data ale pokud je to komplikovanější logika, která dává samostatně smysl, tak si klidně můžeš vytvořit službu game (která bude pracovat s repository) a tu potom zavolat v presenteru. Takže si prakticky přidáš ještě jednu vrstvu. Což je normální praktika.