2015-01-14 8 views
7

Ich mag die Bequemlichkeit Methoden für Datenmanipulationsabfragen $ Conn-> insert() und $ Conn-> update() in Doktrin 2 DBAL, da einfügen/aktualisieren Werte gehalten werden können, übergeben als assoziatives Array. Aber wie kann ich einen NULL-Wert, eine MySQL-Funktion oder andere Ausdrücke als Wert übergeben?Doctrine 2 DBAL-Ausdrücke in update oder Methoden einfügen

Z. B:

/* $conn is a \Doctrine\DBAL\Connection object */ 
$conn->update('person', array('phone' => 'NULL'), array('id' => 1)); 
$conn->update('person', array('lastlogin' => 'NOW()'), array('id' => 1)); 
$conn->update('person', array('visit' => 'visit + 1'), array('id' => 1)); 

Diese Funktionsaufrufe Prepared Statements wie

UPDATE person SET phone = ? WHERE id = ? 

schaffen würde und somit würden die Werte als Strings behandelt werden. Gibt es eine Möglichkeit, dies mit dieser Technik zu machen?

Antwort

1

Es ist ein optionales $types Argument, das standardmäßig auf ein leeres Array:

public function update($tableExpression, array $data, array $identifier, array $types = array()) 

Der $types Array PDO type constants enthalten kann.

Also würde ich versuchen:

$conn->update('person',    // $tableExpression 
    array('phone' => null),   // $data 
    array('id' => 1)     // $identifier 
    array('phone' => \PDO::PARAM_NULL) // $types 
);