Výpis článků z databáze podle kategorie

Upozornění: Tohle vlákno je hodně staré a informace nemusí být platné pro současné Nette.
cerfotoc
Člen | 14
+
0
-

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
+
0
-

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
+
0
-

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
+
0
-

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
+
0
-

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.

vvoody
Člen | 910
+
0
-

Uplne tak isto s tym rozdielom ze v presenteri vyberies len konkretnu kategoriu cez where alebo get, do sablony to vlozis cez parameter $category a samozrejme prvy foreach zrusis.

cerfotoc
Člen | 14
+
0
-

Už mi to funguje. Takže díky moc za cenné rady – zase jsem o kus chytřejší:)