Podmínka z výsledku dotazu dazabáze
Upozornění: Tohle vlákno je hodně staré a informace nemusí být platné pro současné Nette.
- Desttro
- Člen | 126
Zdravím,
chci se zeptat jak zjistit z databáze, zda je hodnota true a nebo false
pomocí selectu.
Chci udělat něco jako:
if ($this->database->table('xxx')->where('id', $id)->where('removed', 0))
{
$this->database->table('xxx')->where('id', $id)->update(array('removed' => '1'));
$this->flashMessage("Obnovit", 'success');
} else {
$this->database->table('xxx')->where('id', $id)->update(array('removed' => '0'));
$this->flashMessage("Smazat');
}
Jestli mi rozumíte, když daná položka má hodnotu removed nastavenou na 0, tak se provede tento dotaz, pokud má jinou tak jiný dotaz.
Nevím, jak tohle udělat. Děkuji za pomoc
- thm
- Člen | 147
Jestli chceš přepínat hodnotu, tak třeba takto:
$article = $this->table('articles')->wherePrimary($articleId)->fetch();
$article->update(array('removed' => !$article->removed)); // ! zneguje boolean
Pokud chceš tu podmínku tak stačí:
if($article->removed) ...
Editoval thm (24. 2. 2015 10:20)
- Desttro
- Člen | 126
Kenji179 napsal(a):
Nebylo by jednodušší uložit si výsledek dotazu do proměnné před podmínku?
určitě bylo, to mě taky napadlo, ale nepřišel jsem na to, jak to udělat. Nemáš nejaký příklad? děkuji
thm napsal(a):
Jestli chceš přepínat hodnotu, tak třeba takto:
$article = $this->table('articles')->wherePrimary($articleId)->fetch(); $article->update(array('removed' => !$article->removed)); // ! zneguje boolean
Pokud chceš tu podmínku tak stačí:
if($article->removed) ...
děkuji, zkusím večer
- David Matějka
- Moderator | 6445
Nebo v jednom dotazu:
$this->database->table('xxx')
->wherePrimary($id)
->update(array('removed' => new Nette\Database\SqlLiteral('NOT removed')));