Změna názvu pole v DB a as

Upozornění: Tohle vlákno je hodně staré a informace nemusí být platné pro současné Nette.
n.u.r.v.
Člen | 485
+
0
-

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)

2k
Člen | 15
+
0
-

A změnit jen klíč v poli, co předáváš do Identity?

popř. prostě jen:

...table->select('col, col2 AS neco')->where...

Editoval 2k (15. 7. 2013 11:05)

n.u.r.v.
Člen | 485
+
0
-

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
+
0
-

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)

n.u.r.v.
Člen | 485
+
0
-

ááá, už je to ok, vyřešil jsem to prvním způsobem (select(‚*, nove_id AS ID, nova_role AS ROLE‘))…

to ohledně getroles a getid zkusím…díky