zobrazní dat z tabulky s cizími klíči
- ales23
- Člen | 10
Ahoj, vytvořil jsem si dtb tabulku s články a do některých polí ukládám jen cizí klíče (int).
V databázi jsou cizí klíče:
author_id na tabulku authors, která obsahuje id, name
category_id na tabulku category, která obsahuje id, name
V modelu mám metodu:
public function findPublishedArticles(int $limit, int $offset)
{
return $this->database->table('articles')
->order('created_at DESC')
->limit($limit, $offset)
->fetchAll();
}
V presenteru je
$articles = $this->articleManager->findPublishedArticles($paginator->getLength(), $paginator->getOffset());
$this->template->articles = $articles;
V šabloně se to zobrazuje správně, vč. stránkování, tedy výpis všech článků seřazený od nejnovějších, ale problém je, že výstupem je v šabloně author_id a category_id jako číslo, nikoli jméno autora a název kategorie. Prošel jsem si dokumentaci k nette database explorer a rozumím tomu v případě konkrétního řádku, ale jak to vyřešit hromadně pro všechny záznamy jsem nenašel. Budu moc vděčný za pomoc. Díky.
- David Matějka
- Moderator | 6445
nemusis to resit nijak „hromadne“, v sablone pri vypisovani toho clanku
proste vypises {$article->author->name}
a database explorer
se o to postara
- David Matějka
- Moderator | 6445
article->name
, nikoliv article_id->name
z dokumentace:
Řekněme, že chceme vybrat všechny knihy, které napsal autor jménem Jon. Musíme napsat pouze jméno spojovacího klíče relace a název sloupce spojené tabulky. Spojovací klíč je odvozen od jména sloupce, který odkazuje na tabulku, se kterou se chceme spojit. V našem příkladu (viz databázové schéma) je to sloupec author_id, ze kterého stačí použít část – author. name je název sloupce v tabulce author. Můžeme vytvořit podmínku také pro překladatele knihy, který je připojen sloupcem translator_id.
Editoval David Matějka (17. 11. 2020 20:51)