Výběr z databáze na základě tagu

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

Dobrý den,
používám Nejnovější Nette 2.1dev a jsem začátečník.
Chci vybrat z tabulky knih ty položky, které mají určité tagy. Moje databáze je stejná jako v příkladu https://doc.nette.org/cs/database.

Prosím, jak mám toto v Nette objektově provést?

rád bych dostal výsledek jako vrací tento SQL kód:

<?php
SELECT DISTINCT book.* FROM book JOIN book_tag ON (book.id = book_tag.book_id) JOIN tag ON (tag.id = book_tag.tag_id) WHERE(tag.title IN ('tag1', 'tag2'));
?>

Děkuju

David Matějka
Moderator | 6445
+
0
-

zkus:

$selectionFactory->table('book')->where(':book_tag.tag.title', array('tag1', 'tag2'));
mira01
Člen | 3
+
0
-

Děkuju moc, funguje.
Jen mi, prosím, vysvětli, co tam dělá ta dvojtečka. Překvapila mě :-)

David Matějka
Moderator | 6445
+
0
-

tldr; ta dvojtecka urcuje smer relace (ze cizi klic je v book_tag)

koukni na http://public.skrasek.com/…_2012_04_28/ (radeji ve ff, v chrome mi to zlobi). sice je to pro 2.0, ale jediny zasadni rozdil je ta dvojtecka, ktera se presunula pred nazev tabulky (byla za) tedy ten muj priklad by v 2.0 byl book_tag:tag.title, nyni je :book_tag.tag.title