Matching table (Vybirani podle vztahove tabulky)
Upozornění: Tohle vlákno je hodně staré a informace nemusí být platné pro současné Nette.
- loneswan
- Člen | 5
Nedávno jsem přešel ze starší verze nette + dibi na nejnovější nette + nette/database a nějak mě nenapadá jak snadno provést dotaz podle m,atching tabulky.
V dibi jsem používal tohle:
<?php
public function fetchTagged($tag_id)
{
return $this->getDatabase()->select('quotes.*, quotes_tags.*')
->from('quotes')
->leftJoin('quotes_tags')
->on('quotes.quote_id = quotes_tags.quote_id')
->where('[quotes_tags.tag_id] = %i', $tag_id);
}
?>
Kde v quotes tabulka je:
quote_id, text
Matching tabulka
quote_id, tag_id
Vybírám podle tag id. K jednomu tagu je X quotes.
Asi jsem nějak mimo, ale naprosto jsem se do těch relací zamotal :D
Editoval loneswan (25. 10. 2012 19:40)
- loneswan
- Člen | 5
Stále dostávám No reference found for $quotes_tags->quotes.
Už jsem v tom dost zracenej. Asi se vrátím k dibi ikdyž Nette\Database je
mi daleko sympatičtější
Zatím krkolomně vyřešeno jako
<?php
public function findByTag($tag_id)
{
return $this->connection->query("SELECT quotes.*, quotes_tags.* FROM `quotes` LEFT JOIN `quotes_tags` ON quotes.quote_id = quotes_tags.quote_id WHERE `quotes_tags`.`tag_id` = ? ORDER BY rating_sum/rating_votes DESC", $tag_id);
}
?>
Editoval loneswan (26. 10. 2012 11:27)