Vypsání řádky z více tabulek spojených cizími klíči

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

Nette Framework 2.0.8, Nette Database, PHP 5.3.18, MySQL InnoDB

Mám v aplikaci Repository.php jako v QuickStart.

V databázi spojené tabulky jako vzorový book.

V prezenteru

...
public function beforeRender()
{
	$this->template->book = $this->bookRepository->findAll();

}
...

V šabloně

...
{foreach $book as $book}
	<tr>
		...
		<td>{$book->autor_id->web}</td>
	</tr>
{/foreach}
...

A mezi tabulkami book a autor
(FOREIGN KEY (autor_id) REFERENCES `autor (id)`

Funguje. Tím myslím zejména, že se vypisuje autorův web z tabulky autor.

Nyní bych poprosil o radu:

V tabulce autor jsem změnil sloupec web na web_id.

Založil novou tabulku web se sloupci id a url.
Mezi tabulky autor a web vytvořil cizí klíč
(FOREIGN KEY (web_id) REFERENCES `autor (id)`.

Je možné po této úpravě databáze vypisovat url autora knihy v šabloně, při procházení $book? Něco jako:

{foreach $book as $book}
	<tr>
		...
		<td>{$book->autor_id->name}</td>
		<td>{$book->...nevím jak ...->url}</td>
	</tr>
{/foreach}

Díky.

redhead
Člen | 1313
+
0
-

Nejde snad

{$book->autor->web->url}

?

mimochodem můžeš vypustit sufix ‚_id‘.

buffus
Člen | 101
+
0
-

Jde. Jak prosté. Děkuju. Já tam cpal mezi názvy těch sloupců…