Vazba M:N pomocí related() – nefunguje
- Shampoo
- Člen | 38
Ahoj,
řeším výpis hodnot databáze, kde mám vazbu M:N.
Mělo by to jít přes related(), nicméně mi laděnka píše:
Nette\MemberAccessException Cannot read an undeclared column
‚category‘. Category by měl být název tabulky, je tomu tak?
Laděnka říká, že neexistuje takový atribut, který v tabulce
belongto není.
Zde je můj dump
Dle tohoto linku
by to mělo fungovat.
Kód v presenteru:
public function renderDefault() {
$this->template->names = $this->db->table('names')->order('n_name ASC');
}
latte:
<tr n:foreach="$names as $name">
<td>{$name->n_name}</td>
<td>
{foreach $name->related('belongto') as $belongTo}
{$belongTo->category->c_name}{sep}, {/sep}
{/foreach}
</td>
</tr>
Budu rád za jakékoliv rady, díky.
- David Matějka
- Moderator | 6445
Ne tabulka, je to odvozeno od nazvu sloupce, viz doc:
https://doc.nette.org/…ase/explorer
Ř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.