Práce s cizími klíči v Nette\Database\Context
Upozornění: Tohle vlákno je hodně staré a informace nemusí být platné pro současné Nette.
- thirdknown
- Člen | 26
Ahojte,
mám neomezené množství uživatelů. Každý má roli (uživatel, správce, administrátor).
Mám 2 tabulky:
- users. Sloupce: id, login, id_role, password
- roles. Sloupce: id, role_name
Při zakládání tabulky users jsem udělal mj.:
``KEY `id_role` (`id_role`),
``CONSTRAINT `users_ibfk_3` FOREIGN KEY (`id_role`) REFERENCES `roles` (`id`)
aby id_role v users odkazovalo na id v roles.
V admineru po naplňění daty se můžu přes users proklikat do roles (kliknu na číslo v id_role a ono mě to hodí do tabulky roles).
Jenže nevím, jak s tím v nette mám pracovat.
Pro to, abych získal role_name jsem zkoušel:
$result = $this->database->table('users')->where('login', $login'])->fetch();
$result->password // Normálně dostanu hash
$result->id_role // Normálně dostanu id
$result->id_role->role_name // Chci název role, nejde to
$result->role_name // Chci název role, nejde to
$result->references('roles') // Chci název role, nejde to
Nevíte prosím, jak na to?
Jediné, co mě funguje je toto:
(ztrácím ale výhodu cizích klíčů)
$id_role = $this->database->table('users')->where('login', $login)->fetch()->id_role;
$role_name = $this->database->table('roles')->where('id', $id_role)->fetch()->role_name;
Všechny tabulky mám InnoDB.
Díky
Editoval thirdknown (29. 7. 2014 13:15)