Spojování tabulek a následné uložení do jedné proměnné

thermaltaker
Člen | 10
+
0
-

Zdravím,

mám následující tabulky

Table:user Table:role Table:scheme
id id id
username user_id color
password name
scheme_id name  
action  

Když udělám

$users = $this->database->table("user");

Tak když pak dám šabloně foreach, tak dokážu získat

$user->id, $user->username, $user->..., $user->scheme->id, $user->scheme->color

ale žádná data u tabulky role.

Takže se chci zeptat, jestli dokážu udělat v modelu něco, abych dokázal v proměnné $users vrátit i propojení s tabulkou role. Je mi jasné, že se to dá pomocí

related('role.user_id');

ale to mi nepřiřadí do proměnné $users.. A navíc bych proměnnou $users musel v modelu projet foreachem, abych ke každému uživateli přiřadil tady tu tabulku. A použít to v šabloně, kde ty data chci vypsat bych aplikoval foreach na všechny uživatele a pak

$user->related('role.user_id')

Mi příjde jako blbost, pracovat s daty v šabloně. Nebo se pletu? Nebo si musím udělat objekt user v modelu a do něj veškerá data naflákat? Pak vrátím jen model user a vše tam budu mít. Ale tomu se chci vyhnout, moc práce by mi to neulehčilo. Předem díky za odpověď!

Editoval thermaltaker (6. 5. 2017 9:03)

Thommie
Člen | 32
+
+2
-

Ahoj,

v šabloně můžeš udělat:

{foreach $user->related('role') as $val}

	{$val->cokoliv}

{/foreach}

Udělá ti to jen dva dotazy.

Editoval Thommie (20. 5. 2017 16:19)

filsedla
Člen | 101
+
0
-

Všechno je to práce s daty (=databází) v šabloně. Tak Nette Database funguje. Taky si myslím, že můžeš klidně psát $user->related('role') v šabloně a nepřecházíš tím do nějakéhko jiného „špatného“ použití.

thermaltaker
Člen | 10
+
0
-

Super, děkuji vám!

Editoval thermaltaker (23. 5. 2017 9:40)