Oznámení
Dibi::update s omezením na jeden sloupec → fluent
před 7 lety
- sumiisakua
- Člen | 47
Díky dibi jsem zhýčkáný z krásných dotazů pro select.
Nyní však u update potřebuji možnost omezit pouze na jeden sloupec.
Mám tento dotaz a rád bych ho přepsal do fluent:
dibi::query("UPDATE [::weapons] SET own = %i", $own, "WHERE id = %i", $id);
Dalo by se to napsat takto, ale zde není omezení pro update pouze jednoho sloupce:
dibi::update("[::weapons]", $own)->where("id = %i", $id);
Neví někdo, jak ten první dotaz upravit do podoby druhého, ale stím omezením?
Proč mi tento dotaz nefunguje:
dibi::insert("[::weapons]", $data);
Když ho nahradim za tento, tak to jde správně:
dibi::query("INSERT INTO [::weapons]", $data);
Editoval sumiisakua (17. 2. 2012 12:05)
před 7 lety
- HosipLan
- Moderator | 4693
dibi::update("[::weapons]", array('own' => $own))->where("id = %i", $id)->execute();
dibi::insert("[::weapons]", $data)->execute();
před 7 lety
- sumiisakua
- Člen | 47
Díky :)
K tomu updatu. Kdybych to chtěl trochu „zabezpečit“ (nahradit %i), tak ten dotaz stačí upravit takto?:
dibi::update("[::weapons]", array('own' => (int) $own))->where("id = %i", $id)->execute();
Zkusil jsem ten insert, ale má to problém s těmi []:
Table ‚prefix.[weapons]‘ doesn't exist
Ještě bych tě chtěl poprosit, jestli nevíš o nějakém pěkném popisu ->execute(). Rád bych věděl, co to dělá a proč to tam vůbec musí být.
Děkuji.
před 7 lety
- HosipLan
- Moderator | 4693
Protože když používáš fluent na cokoliv jiného, než na select, tak nemůžeš vedět, v jaký moment máš dotaz vykonat, protože můžeš přidávat další věci do query. U updatu je to where (a další where) u insertu je to například ON DUPLICATE UPDATE. Prostě musíš té třídě říct, že má dotaz vykonat.
před 7 lety
- sumiisakua
- Člen | 47
HosipLan: Díky za vysvětlení.
Dost mě udivuje, že toto jde:
dibi::insert("::weapons", $data)->execute();
Toto už ne.
dibi::insert("[::weapons]", $data)->execute(); // Table ‚prefix.[weapons]‘ doesn't exist
Když práve dibi u selectu metodu se závorkami používá a problém není :)
před 7 lety
- Milo
- Nette Core | 1119
sumiisakua napsal(a):
K tomu updatu. Kdybych to chtěl trochu „zabezpečit“ (nahradit %i), tak ten dotaz stačí upravit takto?:dibi::update("[::weapons]", array('own' => (int) $own))->where("id = %i", $id)->execute();
dibi::update('[::weapons]', array('own%i' => $own))->where('id = %i', $id)->execute();