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

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)

  1. 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);
  1. … 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
+
+2
-

zkus to najoinovat pres project:

->where('project:project_user.user_id', $user_id)->where('project:project_user.confirmed', 1)
kolsi
Člen | 131
+
0
-

super, funguje – jednodušší než jsem čekal. Díky :)