1

使用 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()'被视为字符串。

4

2 回答 2

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
));
于 2012-06-30T12:15:52.067 回答
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
));
于 2014-05-15T19:53:48.853 回答