Změna názvu pole v DB a as
- n.u.r.v.
- Člen | 485
Ahoj, na localhostu jsem měl svojí DB kde jsem měl podle sebe pojmenované tabluky a atributy, ale teď se zjistilo, že se budou muset měnit názvy některých atributů…
Jenže mám problém, např. při přihlášení v Authenticator.php mám:
...
$row = $this->database->table('uzivatel')->where(array('EMAIL' => $username, 'AKTIVNI' => "A"))->fetch();
...
...
return new Nette\Security\Identity($row->CU, $row->TYP, $arr);
A pak v aplikaci např. často kontroluji roli uživatele (if $this->getUser()->getIdentity()->ROLE == )
Jenže právě atribut role je jeden z těch, který se musí přejmenovat a mě by zajímalo, jak udělat to, abych si načetl atribut s novým názvem, ale do aplikace ho pak předával jiným názvem → abych prostě nemusel všude otrocky přepisovat getIdentity()->ROLE na getIdentity()->novy_nazev_atributu.
Děkuji za pomoc…
P.S.: Pravděpodobně bych měl použít „AS“, ale právě nevím, jak to v nette zapsat…
Editoval n.u.r.v. (15. 7. 2013 10:46)
- n.u.r.v.
- Člen | 485
A změnit jen klíč v poli, co předáváš do Identity?
Myslíš toto?
místo původního
return new Nette\Security\Identity($row->ID, $row->ROLE, $arr);
dát:
return new Nette\Security\Identity($row->novy_atribut_id, $row->novy_atribut_role, $arr);
Ale pak by nefungovalo jinde toto ne?
if ($this->getUser()->getIdentity()->ROLE == "A"){}
ale musel bych to všude kde toto testuju přepsat na toto:
if ($this->getUser()->getIdentity()->novy_atribut_role == "A"){}
a to já nechci…
Takže jedině to přepsat s tím selectem, jak píšeš, ale jelikož z té tabulky beru asi 12 atributů, tak to bude dlouhý a nepěkný…ale alespoň funkční no…
Editoval n.u.r.v. (15. 7. 2013 11:19)
- 2k
- Člen | 15
Myslíš toto?
místo původního return new Nette\Security\Identity($row->ID, $row->ROLE, $arr); dát: return new Nette\Security\Identity($row->novy_atribut_id, $row->novy_atribut_role, $arr);
Ne, „nový“ klíč v $arr změnit na „starý“ už před předáním do Identity:
$arr['nove'] --> $arr['stare']
Jinak bych id zjišťoval pomocí, popř:
$this->getUser()->getId();
$this->user->id
a obdobně role:
$this->getUser()->getRoles();
$this->user->roles
A na zjišťování oprávnění pro roli tu je:
$this->user->isInRole('žabža')
Editoval 2k (15. 7. 2013 11:43)