Vytažení záznamů ze dvou tabulek (1:N vztah)

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

Zdravím, už opravdu dlouho laboruji s tím, jak v Nette\Database udělat následující: mám tabulku firmy (id, nazev, ...) a firmy_poznamky (id, firmy_id, text,...). A chci získat všechny záznamy firem a k těm, co mají nějaké textové poznámky, tak do pole i ty poznámky. Čekal jsem, že to bude jasné jak facka a obdobné jako příklad z dokumentace, ale Laděnka mi neustále hlásila neexistující sloupce a pod …

Nakonec mám funkční toto, ale nepřijde mi to jako nejčistší řešení (už pro to, že to pokládá tolik dotazů, kolik je záznamů ve firmách, což je docela blbě).

<?php
foreach($database->table('firmy')->order('nazev')->limit( $paginator->itemsPerPage, $paginator->offset ) as $firma) {
  foreach ($database->table('firmy_poznamky')->where('firmy_id',$firma->id)  as $poznamka) {
        //... $firma['poznamky'][] = $poznamka;
  }
  $data[] = $firma;
}
?>

Mohl by mi to prosím někdo, kdo s Nette dělá déle než jeden den ( = aka já) přepsat do optimální podoby?

juneau
Člen | 166
+
0
-

No k tomu se právě vztahuje ta věta „Čekal jsem, že to bude jasné jak facka a obdobné jako příklad z dokumentace, ale Laděnka mi neustále hlásila neexistující sloupce a pod“ … opravdu prosím, mohl byste mi ten kousek kódu napsat, jak má opravdu vypadat? Já to prostě dohromady pro tyto dvě tabulky nedal.

juneau
Člen | 166
+
0
-

Aha, tak to už jsem asi opravdu idiot. Přísahal bych (na levé varle!!!), že během posledních 2 hodin jsem měl tento kód napsaný asi 10×, a nikdy nefungoval … a nyní najednou ano. Že by keš?

<?php

//... ten druhy foreach
  foreach ($firma->related('firmy_poznamky')  as $poznamka) {
    //...
  }

?>