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

标签 php mysql doctrine-orm doctrine dbal

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

例如:

/* $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 = ?

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

最佳答案

有一个可选的$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
);

关于php - 更新或插入方法中的 Doctrine 2 DBAL 表达式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27946349/

相关文章:

mysql - 需要帮助在 mysql 中构建哈希标签趋势查询

doctrine - Doctrine 2.1 @Column 注释中 "options"的语法是什么?

php - Symfony 3.1 PSR-6 缓存设置

php - createQueryBuilder/加入列 - Symfony

php - 在 AJAX 中执行带有变量参数的 php 脚本?

php - 获取具有按字段分组的 N 个子项的模型

mysql - date_add 和 interval 在 MySQL 中如何工作?

mysql - innodb如何解决机上交易?

PHP:只允许字符串中的某些字符,而不使用正则表达式

php - 学说 2 和 ORM : how to cache every query for some entity?