Doctrine DBAL:使用'NOW()'值更新时间戳字段

时间:2012-06-29 08:58:03

标签: doctrine-orm silex dbal

使用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
));

但价值仍为00:00:00。我想知道'NOW()'是否被视为一个字符串。

2 个答案:

答案 0 :(得分: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
));

答案 1 :(得分:0)

我偶然发现了同样的问题。由于DBAL本身没有太多也没有好的文档,我将发布我的解决方案。

最后一个参数指定了类型(按照数据和标识数组的顺序合并;就像它们在同一个数组中一样):

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