Jak vybrat řádky, které mají závislý WHERE z jiné tabulky?
Upozornění: Tohle vlákno je hodně staré a informace nemusí být platné pro současné Nette.
- genesiscz
- Člen | 21
Zdravím,
máme řekněme tabulky
- posts
- id
- message
- post_interests
- id
- interest_id
- post_id
a potřeboval bych vybrat všechny příspěvky, které mají konkrétní interest_id. Přes SQL by to šlo takto
SELECT *
FROM posts
INNER JOIN post_interests pi ON pi.interest_id IN (1)
WHERE posts.id IN (pi.post_id)
Jak to ale udělat v Nette? Tabulky mám správně vytvořené včetně cizích klíčů, ale i přesto že jsem se snažil,
$posts = $this->db->table("posts")
->select("posts.*, post_interests.interest_id")
->where("posts.id IN(post_interests.post_id)")
->where("post_interests.interest_id IN (?)", $interest_ids);
mi to vrací
No reference found for $posts->post_interests. search►
Máte někdo alternativu? Já bych klidně použil query(), ale tam mě štve, že to vrací Row místo ActiveRow a nemohu tak používat další reference.
A ano, zkoušel jsem i dvojtečku, beze změny
$posts = $this->db->table("posts")
->select("posts.*, post_interests.interest_id")
->where("posts.id IN(post_interests.post_id)")
->where(":post_interests.interest_id IN (?)", $interest_ids);
Editoval genesiscz (7. 8. 2015 1:24)
- petr.jirous
- Člen | 128
a zkoušel si to jenom takto:
$posts = $this->db->table("posts")
->where(":post_interests.interest_id IN (?)", $interest_ids);
??