Update ..vzdy prepise vsetky zaznamy
- HappyFace
- Člen | 162
Ahojte mam nasledny update.
$this->context->createZbozi()->update($values)
->where(array('id' => 1,'users_id' => $this->user->getId()));
dotaz sa vykona ale neaplikuje sa WHERE :/ (nette 2.0.3 s namespace)
pouzivam nette databazu
co tam pisem zle :(
to WHERE som skusal rozne pisat ako som nasiel na nete ale uz je tolko verzii a
updatov ze je to az neskutocne
Editoval HappyFace (4. 6. 2012 12:45)
- Vojtěch Dobeš
- Gold Partner | 1316
Nepomůže prohodit volání update
a where
?
Předpokládal bych, že update()
bude exekutivní funkce, takže
následné where
už přichází s křížkem po funuse (dotaz už
byl vykonán).
- jtousek
- Člen | 951
Přesně jak říká @vojtech.dobes. Nette\Database funguje tak, že si pomocí podmínek where a limit nejdříve identifikuješ množinu záznamů se kterou chceš pracovat a poté s ní něco provedeš – fetch / update / delete.
V případě podobných problémů vřele doporučuji podívat se, co vlastně Nette udělá.
- HappyFace
- Člen | 162
cache som sa uz dost vyzuril teraz ju mazem aj ked som na dev po kazom zasahu do db kodu (preistotu)
vojtech.dobes napsal(a):
Nepomůže prohodit volání
update
awhere
? Předpokládal bych, žeupdate()
bude exekutivní funkce, takže následnéwhere
už přichází s křížkem po funuse (dotaz už byl vykonán).
jj v tom to bolo .. Update je ukoncenie dotazu a zatim uz nic sa neda napisat
Takto to uz funguje ako ma :) dik za pomoc
$this->context->createZbozi()->where('id', $this->id)->update($values);
- besir
- Člen | 170
vojtech.dobes napsal(a):
Nepomůže prohodit volání
update
awhere
? Předpokládal bych, žeupdate()
bude exekutivní funkce, takže následnéwhere
už přichází s křížkem po funuse (dotaz už byl vykonán).
Škoda, že se to tu neřešilo o pár dní dříve :D Já kvuli tomu přešel na dibi :D, tohle mi totiž nedošlo :D
- HappyFace
- Člen | 162
Caute ..nechcel som zakladat novu temu ked to viac menej stale patri pod tento problem
problem:
- mam 2 tabulky Users a Objednavky
- objednavky maju FK users_id
- potrebujem teraz vypisat Users(to nieje problem) ale aj s poctom:COUNT ich objednavok co zatial spravili
ako napisem condition pre tabulku user a objednavky? respektyve ten join ce NETTE/database
skusal som nieco taketo ale nedokazalo to poskladat ten join
$this->_user = $this->context->createUsers()->select('*,COUNT(objednavky.id) AS obj')->where('users.id = objednavky.users_id');
potreboval by som napisat nieco taket
select users.*, (select count(objednavky.id) from objednavky where objednavky.users_id = users.id) as ocount from users
Editoval HappyFace (5. 6. 2012 10:40)
- HappyFace
- Člen | 162
dik .. som to vyskusal .. vracia to co som potreboval ale len jeden riadol
:(
este som vyskusal aj ten vlastny dotaz co je som hore doplnil ale ten padne na
chybe ked to ukladam do datagridu, lebo ten vysledok nieje typu
Nette\Database\Table\Selection
da sa to nejako transformovat alebo este lepsie priamo implementovat do modelu Users?
class Users extends Selection
{
public function __construct(\Nette\Database\Connection $connection)
{
parent::__construct('users', $connection);
}
}
- HappyFace
- Člen | 162
Tak nakoniec sa tam predsa len objavil bug :/
tie vysledky z DB su nejake poprehadzovane a jeden „chyba“ .. no on nechyba , z db ich pride napriklad 10 ale vypise sa mi len 9 len je tam 2× prvy riadok.
podla mna to robi ten pridany JOIN na konci toho query, ktory neviem odtial dat prec
Editoval HappyFace (5. 6. 2012 13:48)