DB explorer – vypsat všechny záznamy přes vazební tabulku
- stickybit
- Člen | 14
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
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)