Propojení tabulek pomocí Nette\Database\Selection / Thumbnail galerie
- theacastus
- Člen | 81
Zdravím,
Mám celkem 3 tabulky, které se týkají galerií a obrázků:
web_galereis, web_gallery_images a web_files.
web_gallery_images zde nejsou potřeba, protože galerie.thumbnail odkazuje přímo do web_files na web_files.id
Schémata:
web_galleries:
id
title
body (description)
created (datetime|NOW)
posted (datetime)
author → web_view_users.name (protože view neumí klíče…)
thumbnail → web_files.id
web_files:
id
uploaded (datetime|NOW)
path
size
note
S tím že když vypisuji galerie, chci si vytáhnout náhledový obrázek (mohl bych brát 1. obr. v galerii, ale chci jej volitelný…) tak to dělám přes
$galleries = $this->db->table('web_galleries')
->where('posted <', new DateTime())
->order('posted DESC')
->limit(10);
$this->template->galleries = $galleries;
A v šabloně jsem to chtěl vyřešit přes foreach:
{foreach $galleries as $gallery}
<a n:href="Gallery:Show $gallery->id">
<div class="card">
<img class="card-img-top" alt="Náhledový obrázek galerie" src="{$gallery->thumbnail->path}">
<div class="card-block">
<h4 class="card-title">{$gallery->title}</h4>
<p class="card-text">{$gallery->body|truncate:200}</p>
<p class="card-text"><small class="text-muted">{$gallery->posted|date:'%d. %m. %Y'}</small></p>
</div>
</div>
</a>
{/foreach}
Konkrétně toto: $gallery->thumbnail->path
, avšak tam
protestuje. Což chápu, v šabloně to je celkem zlo mi přijde, ale nevím
jak se k tomu efektivně dostat.
Koukám do https://doc.nette.org/…ase/explorer jak můžu, ale zatím mě žádná myšlenka neosvítila. :-(
Díky všem za rady!
- David Matějka
- Moderator | 6445
Ahoj, „ukecane“ reseni je pouzit
$gallery->ref('thumbnail')->path
cimz explicitne reknes, ze chces referencovany radek
kdyz jsi pouzil $gallery->thumbnail
, tak nette primo naslo
sloupecek thumbnail
a vratilo jeho hodnotu. pokud by ho nenaslo,
tak se potom snazi najit cizi klic, ktery to slovo thumbnail
obsahuje. Pokud bys tedy nemel ten sloupecek pojmenovany jen thumbnail, ale
thumbail_id, tak by ti to fungovalo. (jako ted bys mohl pouzit neco jako
$gallery->thumb->path
, ale to je divny :) )