2015-01-14 18 views
7

mi piacciono i metodi di convenienza per la manipolazione dei dati interroga $ conn-> insert() e $ conn-> update() nella dottrina 2 DBAL perché i valori di inserimento/aggiornamento può essere tenuto un passato come array associativo. Ma come faccio a passare un valore NULL, una funzione MySQL o altre espressioni come valore?Doctrine 2 espressioni DBAL in aggiornamento o inserire metodi

es:

/* $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)); 

Queste chiamate di funzione creerebbero istruzioni preparate come

UPDATE person SET phone = ? WHERE id = ? 

ossia i valori sarebbero trattate come stringhe. C'è un modo per fare questo lavoro con questa tecnica?

risposta

1

C'è un $types argomento opzionale, che corrisponde a un array vuoto:

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

La matrice $types possono contenere PDO type constants.

Quindi mi piacerebbe provare:

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