Table vrací celou tabulku při dotazu na konkrétní hodnotu PK

pastyx
Člen | 25
+
0
-

Zdravím,

jsem s nette začátečník a snažím se debuggovat následující problém:

public function getItem($id)
   {
       echo "chci id = $id";
       $result = $this->database->table('odber')->where('idodber = ?',$id);
       var_dump($result);
       return $result;
   }

funkci jako parametr přijde číslo, například ‚3‘, proběhne dotaz, kde sloupec ‚idodber‘ je PK a obsahuje pouze unikátní hodnoty. Funkce však vrátí celou tabulku.

Laděnka mi nezobrazuje žádný dotaz na tabulku ‚odber‘, nejedná se o nějaký problém s cachováním ? Případně jak zajistit to, že získám pouze jeden požadovaný záznam.

Zároveň jsem také zkoušel využít:

public function getItem($id)
   {
       echo "chci id = $id";
       $result = $this->database->table('odber')->get($id);
       var_dump($result);
       return $result;
   }

Což způsobí chybu s konverzí pole na string, pravděpodobně protože tabulka obsahuje další cizí klíč a nette se snaží nějak jednoprvkové id roztáhnout na pole.

zde je náhled tabulky:
http://prntscr.com/f7ot3x

Děkuji za jakoukoliv pomoc, vím že se jedná pravděpodobně o nějakou hloupost, kterou si jako začátečník neuvědomuji.

David Matějka
Moderator | 6445
+
+2
-

k prvnimu – table() vraci selection, coz je nejaky objekt, nad kterym muzes volat where, order atd. a az kdyz nad tim zacnes iterovat nebo zavolas fetch(), tak to provede dotaz a vrati zaznam(y).

takze staci, kdyz to upravis na

$result = $this->database->table('odber')->where('idodber = ?',$id)->fetch();

k druhemu – budes muset ukazat tracy bluescreen, takhle ti neporadim

pastyx
Člen | 25
+
0
-

David Matějka napsal(a):

k prvnimu – table() vraci selection, coz je nejaky objekt, nad kterym muzes volat where, order atd. a az kdyz nad tim zacnes iterovat nebo zavolas fetch(), tak to provede dotaz a vrati zaznam(y).

takze staci, kdyz to upravis na

$result = $this->database->table('odber')->where('idodber = ?',$id)->fetch();

k druhemu – budes muset ukazat tracy bluescreen, takhle ti neporadim

Nevím co je bluescreen, ale tipuji že něco takového http://prntscr.com/f7p0w4

David Matějka
Moderator | 6445
+
0
-

jj je to presne ono :))

skoro to vypada, ze tvoje tabulka ma slozeny primarni klic ze dvou sloupcu. je tomu tak? kdyztak treba zkus smazat cache