Jak upravit SQL dotaz v presenteru tak, aby jsem v Latte nemusel používat get
- Payne
- Člen | 14
Dobrý den,
mám následující přikaz v SQL, ale nedaří se mi celý join provést
v Presenteru. V Nette jsem začátečník a zatím mám největší problémy
s voláním SQL příkazů :) .
select v.id,s.name,v.date from software s
join software_versions v on (s.id=v.software_id)
join (select software_id ,max(date) date
from software_versions group by software_id) v1
on(v.software_id =v1.software_id and v.date=v1.date)
order by v.date desc
Momentálně to dělám tak, že si vytvořím v presenteru ten 2. select, tedy:
$this->template->softwares = $this->database->table('software_versions')->select('software_id, MAX(date) date, description')->group('software_id')->order('date DESC');
a posléze v cyklu v Latte volám hodnoty, které jsou uloženy do tabulky Software pomocí
$softwares_name->get($software->software_id)->name
kde $softwares_name je vlastně tabulka Software.
Je zde nějaká možnost, jak celou tuto práci přenést do Presenteru a
volat pouze hodnoty v Latte?
Co mi vadí je funkce GET v latte.
Popř. pokud mi někdo vyvrátí že volání GET ve smyčce zpomaluje aplikaci,
budu taky rád ale spíš si myslím že spomaluje a tak bych to tedy rád
nahradil.
Děkuji za odpověď.
Editoval Payne (9. 7. 2014 21:12)
- Payne
- Člen | 14
Už jsem to vyřešil! Bylo to jednodušší, než jsem si myslel.
Do selectu Presenteru stačilo dopsat software.name (Byla má chyba, hledal jsem
join a stačilo to dopsat do selectu)
$this->template->softwares = $this->database->table('software_versions')->select('software.name, software_id, MAX(date) date, description')->group('software_id')->order('date DESC');
a v latte
$software->software->name
Suprová funkčnost Nette! Něco takového jsem opravdu nečekal. Jen
otestovat, zda to dělá přesně to co jsem potřeboval :)
Díky za nepomoc. :D Snad tento příspěvek někomu pomůže i když nevím
nevím… :D
`
php
`
EDIT: Zjistil jsem že toto řešení vypisuje špatnou (starou) description. Byl jsem si nucen udělat pohled v databázi protože spojit to nette asi nedokáže, popř. to neumím.
Editoval Payne (10. 7. 2014 17:14)