Výpis článků z databáze podle kategorie
- cerfotoc
- Člen | 14
Zdravím,
v databázi mám 3 tabulky blog_posts, blog_categories a blog_post_to_category a potřebuji na blogu udělat výpis článků podle kategorií.
Tabulka blog_post_to_kategory propojuje články ke kategoriím. Jeden článek může mít být ve více kategoriích najednou.
Jak mám vypsat příspěvky podle vybrané kategorie? Nevím si rady s dotazem na databázi. Používám Nette/Database.
Díky moc za rady!
- vvoody
- Člen | 910
presenter
$this->template->categories = $connection->table('blog_categories');
sablona
<div n:foreach="$categories as $category">
{$category->title}
<div n:foreach="$category->related('blog_post_to_category') as $blogPostToCategory">
{? $post = $blogPostToCategory->ref('blog_post','post_id')}
{$post->title}
</div>
</div>
- cerfotoc
- Člen | 14
Děkuji za radu, ale pořád jsem to uplně nevyřešil.
Hází mi to PDOException – No reference found for $blog_categories->id_category.
Nějak nedokážu pochopit, co ta chybová hláška znamená.
EDIT: teď mi to zase háže Warning – Illegal offset type
Editoval cerfotoc (24. 7. 2012 14:37)
- vvoody
- Člen | 910
Bude problem ti poradit, kedze v mojom kode ziadne $blog_categories nieje a tvoj kod si nepostol ;) ale skusim naslepo. Niekde v kode asi pristupujes k property id_category co by som zmenil na category_id podl struktury db.
Illegal offset type: skus zmazat cache ci sa pri prvom realode stranky tato chyba neodstrani (a zobrazi pravdepodobne tak predosla chyba)
edit: to sa mi vazne vsetko postuje 2x?
Editoval vvoody (24. 7. 2012 15:04)
- cerfotoc
- Člen | 14
Takže, trochu jsem si s tím pohrál a už mi to vypisuje takto: odkaz
Kód vypadá takto:
<div n:foreach="$categories as $category">
<h1>{$category->title}</h1>
{foreach $category->related('blog_post_to_category') as $blogPostToCategory}
{? $post = $blogPostToCategory->ref('blog_posts','post_id')}
<h3 class="blog-heading"><a n:href="detail $post->id">{$post->title}</a></h3>
<p>
{$post->created|date:'j.n.Y'} / {$post->user->name} /
</p>
<p>{$post->perex}</p>
<p><a n:href="detail $post->id">Celý článek ></a></p>
{/foreach}
</div>
Teď bych ještě potřeboval vždy vypsat pouze články z dané kategorie. id kategorie se předává jako proměnná v url.