nette/database vypis pro uzivatele
- zdrhal
- Člen | 42
Ahoj,
mam tabulku EVENTS (id, id_user, id_tempo, id_activity, date) a
tabulku AIMS (id, id_event, value) a chci vypsat AIMS uzivateli
jen pro konkretniho uzivatele. Jde to nejak vyselectovat uz v presenteru?
Me napada pouze reseni.
V modulu mam fce pro praci s DB, takto vypada presenter.
public function renderDefault()
{
// vytahne vse z tab aims
$this->template->aims = $this->database->findAll('aims');
}
template
{foreach $aims as $aim}
{if $aim->event->id_user == $user->identity->id}
<tr>
<td>{$aim->event->dateandtime|date:'d.m.Y'}</td>
<td>{$aim->event->dateandtime|date:'H:i'}</td>
<td>{$aim->event->activity->activity}</td>
<td>{$aim->event->tempo->tempo}</td>
<td class="center">{$aim->value}</td>
<td>
<a n:href="editpercentaim, $aim->id" class="default">Upravit</a>
<a n:href="deletepercentaim, $aim->id" class="default">Smazat</a>
</td>
</tr>
{/if}
{/foreach}
Jde mi o to neni tohle reseni moc velky zaprah pro DB? Treba kdyz budu mit hodne uzivatelu (users) to znamena jeste mnohem vetsi pocet cilu (aims), tak timhle ji dam hodne zapotit ne? Nemuze mi pak treba zacit padat nebo hodne spomalovat vypis?
Editoval zdrhal (2. 4. 2014 13:36)
- sKopheK
- Člen | 207
Koukni dolu do Nette baru, co se provadi za dotazy, a uvidis sam. Nette\Database dela obcas celkem velky kouzla a poklada dotazy, az je to fakt potreba.
Jinak to muzes omezit v presenteru pomoci klauzule
WHERE
, napr.
$this->template->aims = $this->database->findAll('aims')->where('event.id_user', $this->getUser()->identity->id);
(mozna bude nutne pridat pred event.id_user
dvojtecku, nikdy si
nejsem jisty)