2015-01-14 38 views
7

我喜欢数据操作查询的便利方法$ conn-> insert()和$ conn-> update()在doctrine 2 DBAL中,因为插入/更新值可以保持传递作为关联数组。但是,我如何传递一个NULL值,一个MySQL函数或其他表达式作为值?更新或插入方法中的学说2 DBAL表达式

E.g:

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

这些函数调用将创建准备好的语句像

UPDATE person SET phone = ? WHERE id = ? 

因此这些值将被视为字符串。 有没有办法使用这种技术进行这项工作?

回答

1

有一个可选$types参数,默认设置为空数组:

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

$types数组可以包含PDO type constants

所以我想尝试:

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