it-swarm.com.de

Inkrementieren Sie den Feldwert in der Aktualisierungsabfrage

Ich konvertiere ein Modul von d5 nach d7, und im alten Code gibt es eine Update-Abfrage wie die folgende:

<?php
db_query("UPDATE {a_table} SET count = count + 1 WHERE field1 = %d", $some_value);

Wie wir sehen, erhöht es einen Feldwert (AFAIK ist eine MySQL-Funktion). Wenn ich jedoch einen neuen Update-Stil verwende, funktioniert dies nicht.

<?php
db_update('a_table')
    ->fields(array('count' => 'count + 1',))
    ->condition('field1', $some_value)
    ->execute();

Gibt es eine Problemumgehung innerhalb des neuen Stils der Datenbankaktualisierung, ohne eine zusätzliche Abfrage auszuführen, um den vorhandenen Feldwert zum Inkrementieren zu erhalten?

5
Junaid

Sie können dies tun, indem Sie der Abfrage ein Ausdruck hinzufügen:

db_update('a_table')
  ->expression('count', 'count + 1')
  ->condition('field1', $some_value)
  ->execute();
20
Clive