Počet článků v kategorii při výpisu foreach
- Gustav
- Člen | 16
Dobrý den,
lámu si tu hlavu s jedním menší problémem, tedy spíše s mou neznalostí. V latte šabloně vypisuji pomocí foreach kategorie článků, ale vedle toho bych chtěl do závorek vypsat počet článků, které jsou zařazeny do této kategorie.
Nevím jaký je správný postup v Nette, zkoušel jsem komponentu, ale to je asi blbost, proto se obracím na Vás.
V tabulce ‚articles‘ mám sloupec ‚category_id‘ kde mám uložené id kategorie.
Předem děkuji za veškeré rady.
- elden46
- Člen | 37
Nedavno jsem resil neco podobneho, nevim, jestli jsem vyresil optimalne, ale tady je me reseni:
public function beforeRender(){
$this->template->categories = $categories = $this->model->getCategories();
$articlesCount = new Array();
foreach ($categories as $category){
$articlesCount[$category->id] = $this->model->getArticles()->where('category_id',$category->id)->count();
}
$this->template->articlesCount = $articlesCount;
}
V sablone potom:
{foreach $categories as $category}
Kategorie: {$categories->name}, pocet clanku: {$articlesCount[$category->id]}
{/foreach}
Psano jen z hlavy, tak to ber s rezervou…
Editoval elden46 (29. 3. 2012 17:29)
- Jan Mikeš
- Člen | 771
elden46 napsal(a):
Nedavno jsem resil neco podobneho, nevim, jestli jsem vyresil optimalne, ale tady je me reseni:
public function beforeRender(){ $this->template->categories = $categories = $this->model->getCategories(); $articlesCount = new Array(); foreach ($categories as $category){ $articlesCount[$category->id] = $this->model->getArticles()->where('category_id',$category->id)->count(); } $this->template->articlesCount = $articlesCount; }
V sablone potom:
{foreach $categories as $category} Kategorie: {$categories->name}, pocet clanku: {$articlesCount[$category->id]} {/foreach}
Psano jen z hlavy, tak to ber s rezervou…
Takto bych to neresil, predstav si, ze mas v databazi 100 kategorii, cyklus se 100× provede a mas nakrku 100 dotazu do databaze na pocet clanku. Naraz bys mel dejme tomu 1000 uzivatelu na strance, kteri by se divali prave na stranku s kategoriema a hle, ve stejny okamzik mas 100 000 dotazu do databaze, to uz je celkem huste cislo ne? :)
To co pise Caine se zda byt lepsi a vporadku.