Best Practice – Procházení rodičů

- valman
 - Člen | 2
 
Uveďme si modelový příklad.
Mějme tabulky: Users, Texts, Posts, Views.
Users jsou rodičem pro texts. Texts jsou rodičem pro posts. Posts jsou
rodičem pro views.
Vytáhnu si přes group+limit dotaz nad View několik záznamů. Chci si zobrazit jméno Postu, jméno Textu a jméno Usera. Tedy všech rodičů.
Při přímém přístupu to znamená přes cyklus projít výsledek dotazu a
v řetězu se třikrát dotázat na rodiče. Při použití metody
ref mi tento přístup v půli řetězu selže, protože nevrátí
kompletní záznam, který neobsahuje odkaz na rodiče. V současnosti to mám
implementováno přes prosté find dotazy s fetch
metodou v návazposti v posloupnosti za sebou.
Otázka zní, jestli existuje nějaká best practice v případě procházení posloupnosti rodičů, když chci data od každého z nich a očekávám velkou pravděpodobnost opakování ve vyšších patrech pyramidy rodičovství.

- valman
 - Člen | 2
 
S Nette bojuji teprve tři dny a patrně šlo o problém s cache, protože
její opětovné smazání pomohlo.
Problém byl v tom, že první ref vracelo pouze sloupce
id a name a už ne text_id.
Současný kód vypadá následovně:
$chapters = $payments->select('chapter_id, count(*) AS cnt')->group('chapter_id')->order('cnt DESC')->limit(10);
foreach ($chapters as $chapter) {
    $info_chapter = $chapter->ref('chapter');
    $info_text = $info_chapter->ref('text');
    $info_author = $info_text->ref('user');
    /* Magic */
}
Měl bych však dotaz, jestli tento kód není náchylný k obdobným náhodným chybám do budoucna.