Table vrací celou tabulku při dotazu na konkrétní hodnotu PK
- pastyx
- Člen | 25
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
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
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
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