Propojení tabulek pomocí Nette\Database\Selection / Thumbnail galerie

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

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
+
+1
-

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 :) )