Spojení tabulek s jednou společnou buňkou
- Rellik
- Člen | 104
Zdarvím vespolek. Mám dotaz jak na spojení dvou tabulek. Zatím sem to
nikde nepotřeboval, ale te by se mi to hodilo.
Mám v DB dvě tabulky s jednou společnou buňkou „folder“.
V presenteru k tabulkám přistupuju pomocí modelu
model:
public function getGallery() {
return $this->database->table('mmrs_gallery');
}
public function getPhotos() {
return $this->database->table('mmrs_photos');
}
presenter:
$this->model->getPhotos()
$this->model->getGallery()
Z první tabulky potřebuju vypsat poslední 4 záznamy o obrázcích
(buňka photo)
Z té druhé k ní potřebuju připojit název Galerie (buňka gallery)
Prohledal sem celé fórum několikrát pročetl https://doc.nette.org/cs/database#…
Ale stále se mi nedaří.
Zkoušel sem to dát dohromady v presenteru do pole
$lastImage = $this->model->getPhotos()->order('id DESC')->limit(4);
foreach ($lastImage as $wiew) {
foreach ($this->model->getGallery()->where('folder', $wiew->folder) as $name) {
$this->template->wiews_last = array($wiew->photo => $name->name);
}
}
Ale dostanu jen jeden záznam. Podobným způsobem sem to zkoušel i v latte, ale opět získám jen jeden záznam. Poradí někdo?
- castamir
- Člen | 629
v každém průchodu cyklu si přepisuješ hodnotu
$this->template->wiews_last
. Jestli z toho chceš udělat
pole, zkus kód upravit v podobném duchu jako následující kód
$lastImage = $this->model->getPhotos()->order('id DESC')->limit(4);
$result = array();
foreach ($lastImage as $wiew) {
foreach ($this->model->getGallery()->where('folder', $wiew->folder) as $name) {
$result[] = array($wiew->photo => $name->name);
}
}
$this->template->wiews_last = $result;
Nicméně, tohle by se dalo vyřešit už na úrovni databáze a to vhodnout úpravou dotazu
- Rellik
- Člen | 104
Jo supr díky. Ještě sem tam přidal jednu položku a výsledné pole teď už mám se všemi hodnotami, které potřebuju. Nicméně sem se do toho už celkem zamotal a nejspíš to dělá přepracování, nebo alkohol, ale nemůýu si s tím teď poradit u výpisu…
Array
(
[0] => Array
(
[71b2f4861ee179374deaa04a459a5cdb] => Array
(
[janbeaniii.jpg] => JIná galerie
)
)
[1] => Array
(
[71b2f4861ee179374deaa04a459a5cdb] => Array
(
[0801picr.jpg] => Jiná galerie
)
)
[2] => Array
(
[71b2f4861ee179374deaa04a459a5cdb] => Array
(
[homer-simpson_003.jpg] => Jiná galerie
)
)
[3] => Array
(
[2b4769f23fb0d23f32f04f01aba88da9] => Array
(
[dsc_1557.jpg] => Jiný název galerie
)
)
)
Ten dlouhý kód je složka v které je dále v dalším poli prezentován
obrázek a název galerie. Z toho potřebuju dostat takový výstup:
Takto ** výrazněné hodnoty jsou ty co dosazuju..
<a href="{link PhotoWiew: gallery=>**Jiný název galerie**}"><img src="/gallery/**2b4769f23fb0d23f32f04f01aba88da9**/nahledy/**dsc_1557.jpg**" alt="**dsc_1557.jpg**"></a>
Už sem takové pole používal, ale za boha si nemůžu vzpomenout jak… Tak kdyby se někomu ještě chtělo poradit, byl bych rád. Pokud ne, tak na to určitě dřív nebo pozděj dojdu i sám…
EDIT:
Vyřešeno…
{foreach $wiews_last as $key => $value}
{foreach $value as $k => $val}
{foreach $val as $l => $name}
<td><a href="{link PhotoWiew: gallery=>$name}"><img src="{$basePath}/gallery/{$k}/nahledy/{$l}" alt="{$l}"></a></td>
{/foreach}
{/foreach}
{/foreach}
Ještě líp pojmenuju proměnné. Hodil sem to sem narychlo aby případně
nemusel nikdo přemýšlet.. :)
Díky moc za pomoc… :)
Editoval Rellik (20. 1. 2013 19:38)
- Tabetha
- Člen | 140
{foreach $wiews_last as $value} // tu by nemalo byť potreba $key :-)
{foreach $value as $k => $val}
{foreach $val as $l => $name}
<td><a href="{link PhotoWiew: gallery=>$name}"><img src="{$basePath}/gallery/{$k}/nahledy/{$l}" alt="{$l}"></a></td>
{/foreach}
{/foreach}
{/foreach}