nette/database vypis pro uzivatele

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

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

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)

zdrhal
Člen | 42
+
0
-

Vypada to, ze to jede presne tak jak jsem potreboval. Moc ti dekuji, panbuh ti to oplat na detech :D Díky!

sKopheK
Člen | 207
+
0
-

Kusuj :D