Nette\Database aneb traverzování kategorií
Upozornění: Tohle vlákno je hodně staré a informace nemusí být platné pro současné Nette.
- Jakub Kontra
- Člen | 30
Zdravím komunitu,
jsem začátečník s Nette a mám problém s Nette Database.
Potřeboval bych rekurzivně traverzovat okolo stromu, což se mi
„úspěšně“ daří, nýbrž chyba je zde
Struktura tabulek + dummy data – Odkaz
Potřeboval bych poladit spíše dotaz.
{block #category}
{if count($categories) > 0}
<ul>
{foreach $categories as $category}
<li>
{ifCurrent Category: $category->id}
<strong>{$category->title}</strong>
{else}
<a n:href="Category: $category->id">{$category->title}</a>
{/ifCurrent}
{include #category, 'categories' => $category->children}
</li>
{/foreach}
</ul>
{/if}
{/block}
Proměnná
$category->children
by měla obsahovat všechny children kategorie nadřazené parent, nejsem schopen dotazem dostat tyto informace
mohl by mne někdo prosím „Nakopnout“ jak dále?
Díky
Jimmy
- vvoody
- Člen | 910
Odporučil by som ti switchnúť children za parent. Logicky ak som na riadku Notebooky, tak odkaz na riadok 2, čiže Počítače, je rodič.
V šablóne:
{include #category, 'categories' => $category->related('parent','categories')}
alebo ak neposlúchneš moju radu :) tak:
{include #category, 'categories' => $category->related('children','categories')}
(Predpokladám že id je nastavené ako primary key)
- Jakub Kontra
- Člen | 30
Dotaz vypadá takto
$this->categoryRepository->findBy(array('parent' => NULL));
public function findBy(array $by)
{
return $this->getTable()->where($by);
}
- Jakub Kontra
- Člen | 30
Fixed!
$this->template->categories = $this->categoryRepository->findBy(array('parent' => NULL,'children' => NULL));
Díky moc za pomoc!