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
+
0
-

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

Kenji179
Člen | 4
+
+1
-

Nebylo by jednodušší uložit si výsledek dotazu do proměnné před podmínku?

thm
Člen | 147
+
0
-

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
+
0
-

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
+
0
-

Nebo v jednom dotazu:

$this->database->table('xxx')
	->wherePrimary($id)
	->update(array('removed' => new Nette\Database\SqlLiteral('NOT removed')));
Desttro
Člen | 126
+
0
-

Děkuji, super pomohlo!