update s pouzitim & operatoru
- David Matějka
- Moderator | 6445
ahoj, v sql delam dlouho, ale jeste jsem tam nevidel pouziti |
a &
. to maji byt bitove operace nebo neco se snazis
dosahnout?
- dadinok
- Člen | 17
ano su to bitove operacie, cize mam nejake prava a chcem ich prehodit
cize chcem prehodit vsetkym uzivatelom s pravami 4096 prava na
hodnotu 65536
potrebujem spustit dva dotazy:
pridat pozadovane prava a potom vymazat povodne cize
update tabulka set prava = prava | 65536 WHERE prava & 4096
a nasledne
update tabulka set prava = prava & ~4096 WHERE prava & 4096
toto mam v module v metode pre update, ale nezbehne, result je NULL:
$data id z kontrolera, nepouZIvam zatial komponentu form preto:
$data = $this->request->getPost();
if (mam $data) {
tak volam this->db->nastavprava($data);
}
public function nastavprava($data) {
…
$sql = ‚update tabulka set prava = prava | ' . $data['noveprava‘] . ' WHERE
prava & ' . $data[‚stareprava‘];
$result = $this->database->query($sql);
…
}
Editoval dadinok (25. 9. 2018 10:55)
- David Matějka
- Moderator | 6445
melo by jit pouzit klasicky query bez builderu, tedy neco jako
$db->query('UPDATE tabulka SET prava = prava | ? WHERE prava & ?', $promenna1, $promenna2);
u builderu by melo jit pouzit SqlLiteral
$db->table('tabulka')
->where('prava & ?', $promenna2)
->update(['prava' => new Nette\Database\SqlLiteral('prava | ?', [$promenna1])])
- dadinok
- Člen | 17
David Matějka napsal(a):
melo by jit pouzit klasicky query bez builderu, tedy neco jako
$db->query('UPDATE tabulka SET prava = prava | ? WHERE prava & ?', $promenna1, $promenna2);
u builderu by melo jit pouzit SqlLiteral
$db->table('tabulka') ->where('prava & ?', $promenna2) ->update(['prava' => new Nette\Database\SqlLiteral('prava | ?', [$promenna1])])
super hned vyskusam dam vediet