更新或插入方法中的Doctrine 2 DBAL表达式

时间:2015-01-14 15:20:51

标签: php mysql doctrine-orm doctrine dbal

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

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 个答案:

答案 0 :(得分:2)

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

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

$types数组可以包含PDO type constants,这将更改对应的$data值的处理方式。

所以我试试:

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