vložení výpisu z databáze doprostřed jiného výpisu
- kolaloka
- Člen | 69
V databázi mám dvě tabulky: zakázky a commenty (comment má pochopitelně column zakazka_id).
Vypsat zakázky je snadné, ale nevím jak během výpisu zakázek zavolat dotaz na commenty, které danou zakázku vypisují:
výsledkem by mělo být toto:
zakázka číslo 1 a její vlastnosti v jednom řádku
comment číslo 2 k zakázce č.1
comment číslo 7 k zakázce č.1
comment číslo 9 k zakázce č.1
zakázka číslo 2
comment číslo 1 k zakázce č.2
comment číslo 3 k zakázce č.2
comment číslo 4 k zakázce č.2
V klasickém PHP je to jednoduché, prostě doprostřed každého dotazu vrazím další while…
Prosím poraďte mi jak nejlépe na to v Nette?
- Mysteria
- Člen | 797
S použitím Nette Database Table nejjednodušeji asi takto, samozřejmě názvy sloupců si musíš upravit na vlastní strukturu.
// Presenter
$this->template->contracts = $this->database->table('zakazka');
// Latte
{foreach $contracts as $contract}
Název: {$contract->name}
Komentáře:
{foreach $contract->related('comment')->order('id') as $comment}
{$comment->content}
{/foreach}
{/foreach}
Editoval Mysteria (15. 3. 2017 13:32)
- kolaloka
- Člen | 69
Takže, sice to řešení bylo malinko jiné, než píše Mysteria, ale to vůbec nevadí, patří mu velký dík, protože to mě postrčilo správným směrem, funguje mi to následovně: (kdyby někdo řešil to samé)
<?php
// Presenter přesně jak píše Mysteria
$this->template->zakazka = $this->database->table('zakazka')
// Late ale takto:
{foreach $zakazka as $order}
Název: {$order->name}
Komentáře:
{foreach $order->related('comment','zakazka_id') as $comment}
{$comment->text}
{/foreach}
{/foreach}
?>
Je to vlastně typická relace „has many“, jak ji uvádí dokumentace
nette database.
Takže ještě jednou veliký dík, Mysteria!
Editoval kolaloka (15. 3. 2017 21:54)