Odkazování v tabulkách pomocí cizích klíčů
- stemba
- Člen | 20
Mám takový problém, vytvořil jsem si podle Quickstartu první aplikaci, vše funguje perfektně, ale pak jsem si vytviřl vlastní aplikaci, ale nefunguje mi odkazování mezi tabulkami. Mám tabulku books s údaji o knize a také je v ní sloupec author_id, který odkazuje pomocí cizího klíče na tabulku authors na sloupec author_id (primární klíč), ve které jsou údaje o autorech knih.
Struktura tabulky books
Pole | Typ | Nulový | Výchozí |
---|---|---|---|
book_id | int(11) | Ne | |
title | varchar(50) | Ne | |
author_id | int(11) | Ne |
Struktura tabulky authors
Pole | Typ | Nulový | Výchozí |
---|---|---|---|
author_id | int(11) | Ne | |
name | varchar(50) | Ne |
Jako model jsem použil Nette/…/Selection a vytvořil službu v config.neon jako v Quickstartu. Při výpisu jsem použil tento kód:
Presenter:
$this->template->books = $this->context->CreateBooks();
Šablona:
{foreach $books as $book}
{$book->title} {$book->authors->name}<br>
{/foreach}
Laděnka ale stále hlásí chybu: „No reference found for
$books->authors“
V databázi jsem použil tabulky InnoDB, nastavil indexy i cizí klíče, ale
stále nic.
Snažil jsem se postupovat podle quickstartu, ve kterém to stejným způsobem
funguje, ale zjevně dělám někde chybu.
Neměl bystě někdo nápad co s tím?
Díky
- nanuqcz
- Člen | 822
Ahoj,
zkus při návrhu DB používat NotORM konvence (tzn. názvy tabulek jednotným číslem,
primární klíč má vždy název „id“) – tyto konvence používá
i Nette\Database. Podle mě se tím problém vyřeší.