Database explorer jak změnit hodnotu při updatu?

Allconius
Člen | 317
+
0
-

Ahoj, dá se při update změnit původní hodnota v databázi jen přičtením nějaké hodnoty, nebo je potřeba nejprve vyselektovat původní hodnotu pak změnit a provést update ? Pokud to jde tak bych potřeboval syntax pro tento update bez nutnosti předchozího selektu původní hodnoty:

<?php

            $count = $this->database->table($this->tabulka)
                ->where('id', $updateId) // must be called before update()
                ->update([
                    'cas' => [puvodni hodnota] + $values["cas"],

                ]);

?>
Allconius
Člen | 317
+
0
-

Allconius napsal(a):

Ahoj, dá se při update změnit původní hodnota v databázi jen přičtením nějaké hodnoty, nebo je potřeba nejprve vyselektovat původní hodnotu pak změnit a provést update ? Pokud to jde tak bych potřeboval syntax pro tento update bez nutnosti předchozího selektu původní hodnoty:

<?php

            $count = $this->database->table($this->tabulka)
                ->where('id', $updateId) // must be called before update()
                ->update([
                    'cas' => [puvodni hodnota] + $values["cas"],

                ]);

?>

tak jsem to nakonec našel v nějakým staým vláknu:

<?php
'cas' => new \Nette\Database\SqlLiteral('cas + '.$cas_rozdil.''),
?>
David Matějka
Moderator | 6445
+
+2
-

jen ten string neslepuj ručně, potencionálně otevíráš sql injection zranitelnost, použij parametry:

'cas' => new \Nette\Database\SqlLiteral('cas + ?', [$cas_rozdil]),
Allconius
Člen | 317
+
0
-

David Matějka napsal(a):

jen ten string neslepuj ručně, potencionálně otevíráš sql injection zranitelnost, použij parametry:

'cas' => new \Nette\Database\SqlLiteral('cas + ?', [$cas_rozdil]),

Ahoj, díky moc

David Grudl
Nette Core | 8239
+
+2
-

'cas+=' => $values["cas"]

https://doc.nette.org/…atabase/core#…