教义DBAL:更新时间戳字段与“NOW()”值(Doctrine DBAL: Updating ti

2019-10-16 22:29发布

使用Doctrine DBAL,我有一些代码,插入一个新行到main从绑定的形式值数据库$telephone_international$surname

之后做到这一点,它插入一个新的记录到数据库副本。 $app['dbs']['backup']

如果这是成功的,插入入口前面的main数据库中获取其copied值进行更新。 所述copied列是一个时间戳,默认值是0,但下面的代码应该将其更改为当前时间。

$app['dbs']['main']->update('phonebook', array(
    'mediated'  => 'NOW()'
), array(
    'telephone' => $telephone_international, 
    'surname'   => $surname
));

但价值依然0000-00-00 00:00:00。 我不知道'NOW()'被视为字符串。

Answer 1:

正如我在上面的意见建议,这似乎是要走的路,因为这里所说:
http://doctrine-orm.readthedocs.org/en/2.0.x/cookbook/working-with-datetime.html

因此,尝试这样的:

$app['dbs']['main']->update('phonebook', array(
    'mediated'  => new \DateTime("now")
), array(
    'telephone' => $telephone_international, 
    'surname'   => $surname
));


Answer 2:

我绊了同样的问题。 由于没有太多和DBAL本身没有很好的文档,我要发布我的解决方案。

有其指定的类型最后一个参数(在数据和identifcation数组的顺序合并 ;如同它们是在同一阵列中):

$app['dbs']['main']->update('phonebook', array(
    'mediated'  => new DateTime()
), array(
    'telephone' => $telephone_international, 
    'surname'   => $surname
), array(
    'datetime',
    PDO::PARAM_STR,
    PDO::PARAM_STR
));


文章来源: Doctrine DBAL: Updating timestamp field with 'NOW()' value