Spojení přes více tabulek
Upozornění: Tohle vlákno je hodně staré a informace nemusí být platné pro současné Nette.
- kolsi
- Člen | 131
Ahoj, měl bych dotaz, jak v Nette Database udělat (nejlépe pomocí jednoho příkazu) select přes více tabulek:
Mám tyto tabulky:
user
project
project_user (M:N mezi project<->user + sloupec „confirmed“)
task (sloupec project_id do project)
task_user (M:N mezi task<->user)
- A teď chci vybrat všechny záznamy z tabulky „task“ pro daného uživatele v „user“ (to je ok)…
$tasks = $this->connection->table('task')->where(':task_user.user_id', $user_id);
- … pro které je v tabulce „project_user“ nastaven sloupec „confirmed“ na 1. V obyč SQL to dohromady dám, ale zajímá mě, jestli to jde poskládat i s pomocí NDB. Něco jako:
WHERE project_user.project_id = task.project_id AND project_user.user_id = $user_id AND project_user.confirmed = 1
Dvojtečková konvence (jako v a) zde nefunguje, protože ta hledá přímo vazbu mezi task<->project_user, která samozřejmě neexistuje. Nějaký nápad? Díky.
- David Matějka
- Moderator | 6445
zkus to najoinovat pres project:
->where('project:project_user.user_id', $user_id)->where('project:project_user.confirmed', 1)