Nette database related – pouze 0 nebo 1 zaznam

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

Zdravim.
Mam pokousim se o system s anketama. V kazde ankete je mozne hlasovat pouze 1×.
V šabloně mám následující related kod:

//jiz jsem hlasoval v akete?
{if $oMatch->related('hlas')->where('user_id', $user->getIdentity()->id )->count('*')>0 }
   //ano v akete mam alespon 1 hlas
   {foreach $anketa->related('hlas')->where('user_id', $user->getIdentity()->id ) as $mujHlas}
      //zjisti pro koho jsem hlasoval
      Muj hlas: {$mujHlas->hlas_id}
   {/foreach}

{else}
   Hlasoval jsem<br/>
{/if}

Neslo by to zapsat jednoduseji? Protoze v ankete nemuzu hlasovat vicekrat, prijde mi zbytecny foreach

{ifset $oMatch->related('hlas')->where('user_id', $user->getIdentity()->hlas_id )->hlas_id}
   Muj hlas: {$oMatch->related('hlas')->where('user_id', $user->getIdentity()->hlas_id )->hlas_id}<br/>
{/ifset}

Fetch v latte neexistuje,co?

hrach
Člen | 1838
+
0
-

Existuje v Nette\Database.

{ifset $oMatch->related('hlas')->where('user_id', $user->getIdentity()->hlas_id )->hlas_id}
   {var $vote = $oMatch->related('hlas')->where('user_id', $user->getIdentity()->hlas_id )->fetch()}
   Muj hlas: {if $vote}{$vote->hlas_id}{else}bez hlasu{/if}<br/>
{/ifset}

Editoval hrach (18. 10. 2012 17:22)

motorcb
Člen | 552
+
0
-

@**hrach**:
Díky, dlužim ti pivo :)

enumag
Člen | 2118
+
0
-

@hrach: Nebude zbytečně neefektivní mít tam to $oMatch->related('hlas')->where('user_id', $user->getIdentity()->hlas_id ) takhle 2x?

hrach
Člen | 1838
+
0
-

Samozrejme…myslel jsem ze ta obalka je cyklus anezkoumal sem to :)