propojení tabulek → RELATED u tabulky USER
- AZJOL
- Člen | 34
Zdravím, chtěl bych propojit tabulku USER s tabulkou UNIT, protože v aplikaci chci vypsat i společnost, ke které je uživatel vázán.
v layoutu klasicky vypíšu LOGIN pomocí příkazu:
$user->getIdentity()->LOGIN
Chtěl jsem to vypsat nějak takto:
{$user->getIdentity()->LOGIN|upper} - {$user->related ("UNIT.UNIT_ID")->NAME}
Tracy logicky vyhodila chybu: „Call to undefined method Nette\Security\User::related()“
Je nějaká jiná možnost, jak to udělat nebo budu muset udělat natvrdo select v presenteru a pak si pro něj šáhnout?
Díky moc za každou odpověď
Editoval AZJOL (12. 5. 2017 10:02)
- h4kuna
- Backer | 740
Nejprve k problému co jsi popsal, saháš na objekt Nette\Security\User, který se stará o identitu, a zapouzdřuje authorizator a authenticator pokud jsou k dispozici. Tento objekt netuší lautr nic o databázi.
Jelikož ta data máš v databázi, tak je jen potřeba dořešit odkud je číst, případně přeuložit.
- nechat v databázi a pokaždé si položit dotaz, případně optimalizovat, na to si napiš extra třidu
- při vytváření identity si tato data ulož právě do ní
- použít jiná uložiště
- Altimit
- Člen | 82
a nemáš mít náhodou v druhé tabulce (unit) označené toho usera
(user_id)? potom udělat propojení v databázi skrze cizí klíče a nette si
to už potom dokáže vytáhnou. :)
já to mám skrze ref() a použití cizích klíčů. – většinou se ti
vytvoří samy, pokud dobře pojmenuješ sloupečky. :)
- AZJOL
- Člen | 34
h4kuna napsal(a):
Nejprve k problému co jsi popsal, saháš na objekt Nette\Security\User, který se stará o identitu, a zapouzdřuje authorizator a authenticator pokud jsou k dispozici. Tento objekt netuší lautr nic o databázi.
Jelikož ta data máš v databázi, tak je jen potřeba dořešit odkud je číst, případně přeuložit.
- nechat v databázi a pokaždé si položit dotaz, případně optimalizovat, na to si napiš extra třidu
- při vytváření identity si tato data ulož právě do ní
- použít jiná uložiště
Nedošlo mi, že to můžu doplnit rovnou při vytváření identity..Díky moc!!