使用 insert() 方法通过 PHP Doctrine\DBAL 2 插入 DateTime 值

Posted

技术标签:

【中文标题】使用 insert() 方法通过 PHP Doctrine\\DBAL 2 插入 DateTime 值【英文标题】:using insert() method to insert DateTime value with PHP Doctrine\DBAL 2使用 insert() 方法通过 PHP Doctrine\DBAL 2 插入 DateTime 值 【发布时间】:2012-04-18 07:38:21 【问题描述】:

如何使用 Doctrine\DBALphpDateTime 对象作为数据库字段的值传递?

$DB 是一个 Doctrine\DBAL\Connection 实例。

$DB->insert('table_name', [
    'field' => new \DateTime(),
]);

// Catchable fatal error: Object of class DateTime could not be converted to string

上面的代码不起作用,文档很少。

我确定您可以使用其他 DBAL 方法直接提供 DateTime 对象,是否可以使用 insert() 做到这一点?

【问题讨论】:

找到解决方案。只需将第三个参数 array('datetime') 传递给 insert() 方法。对 DateTime 使用 'datetime',对字符串使用 PDO::PARAM_STR,对整数使用 PDO::PARAM_INT。 【参考方案1】:
$DB->insert('table_name', [
    'foo'   => 'foo',
    'bar'   => 17,
    'field' => new \DateTime(),
], [
    PDO::PARAM_STR,
    PDO::PARAM_INT,
    'datetime',
]);

成功了! ))

【讨论】:

第一个数组中元素的顺序呢?我假设当键值对数组被正确声明为函数参数时,键的顺序将与它们被声明的顺序匹配,但是如果键值对数组是由其他函数动态创建的呢?

以上是关于使用 insert() 方法通过 PHP Doctrine\DBAL 2 插入 DateTime 值的主要内容,如果未能解决你的问题,请参考以下文章

如何在php类中执行某方法的时候自动执行另一个方法?比如我执行数据插入的时候自动运行数据过滤的方法?

无法在 php 中使用 MYSQL INSERT INTO

php mysql_insert_id()

PHP基础语法

SQL Server 错误 1934 发生在 INSERT 到具有计算列 PHP/PDO 的表中

mysql_insert_id 替代 postgresql