DB explorer – vypsat všechny záznamy přes vazební tabulku

stickybit
Člen | 14
+
0
-

Dobrý den,

pročítal jsem si nápovědu a různé dotazy ve fóru a nedospěl jsem k závěru, jak udělat přes databázi explorer tento SQL dotaz, který mně při použití přes fetchAll funguje:

$this->database->fetchAll('SELECT * FROM ukoly JOIN ukoly_users ON ukoly.id = ukoly_users.ukoly_id WHERE ukoly_users.users_id = ?', $user);
# načíst všechny úkoly přes vazební tabulku ukoly_users pro users_id

Smysl je takový, že jeden úkol může dělat více userů a daný user by měl být schopný si zobrazit všechny svoje úkoly.

Mám vazební tabulku ukoly_users bez nastavených cizích klíčů, ve které je vazba na tabulku „ukoly“ a na tabulku „users“

vid 	ukoly_id 	users_id
1 		1 			2
2 		1 			3
3 		2 			2
4 		3 			2
5 		3 			1

Zkusil jsem to takto, ale hodí to no reference i když nastavím cizí klíče.

$ukoly = $this->database->table('ukoly')
->where('ukoly_users.users_id', $user)

#Chyba No reference found for $ukoly->ukoly_users

Neměl bych problém s tím používat fetchAll, ale s výsledky z fetchAll si neví rady stránkovač, který používám IPub\VisualPaginator\Components.

Můžete mně prosím někdo nasměrovat či jen sdělit, zda je možné takový dotaz sestavit přes Database explorer v Nette? Děkuji

Editoval stickybit (30. 4. 2018 9:54)

David Matějka
Moderator | 6445
+
0
-

ahoj, jedna se o „has many“ relaci, takze musis zapsat dvojtecku pred nazev te relace:

$ukoly = $this->database->table('ukoly')
->where(':ukoly_users.users_id', $user)