Doctrine orm DBAL原则:使用';现在();价值

Doctrine orm DBAL原则:使用';现在();价值,doctrine-orm,silex,dbal,Doctrine Orm,Silex,Dbal,使用DBAL,我有一些代码,可以从绑定为$telephone\u international和$lasname的表单值将新行插入main数据库 完成后,它会将一条新记录插入到一个重复的数据库中$app['dbs']['backup'] 如果成功,先前插入main数据库的条目将更新其copied值。复制的列是时间戳,默认值为0,但以下代码应将其更改为当前时间 $app['dbs']['main']->update('phonebook', array( 'mediated' =&g

使用DBAL,我有一些代码,可以从绑定为
$telephone\u international
$lasname
的表单值将新行插入
main
数据库

完成后,它会将一条新记录插入到一个重复的数据库中<代码>$app['dbs']['backup']

如果成功,先前插入
main
数据库的条目将更新其
copied
值。复制的
列是时间戳,默认值为0,但以下代码应将其更改为当前时间

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

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

正如我在上面的评论中所建议的,这似乎是一条路,如下所述:

所以试着这样做:

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

正如我在上面的评论中所建议的那样,这似乎是一条路要走,如下所述:

所以试着这样做:

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

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

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


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

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


作为简单的解决方法,您可以使用php的日期函数,如:'mediated'=>time(),为DateTime:new\DateTime('now')插入时间戳。作为简单的解决方法,您可以使用php的日期函数,如:'mediated'=>time(),为DateTime:new\DateTime('now')插入时间戳。谢谢您的回答。然而,我(应该说是我的合作开发者)决定使用
date\u default\u timezone\u set('GMT')
'mediated'=>日期('Y-m-dh:i:s')以获得所需的结果。我将检查这是否在其他应用程序中起作用,在这一点上,我会将其标记为已接受。现在我已经返回到Symfony2和条令开发,我想我应该重新讨论这个问题。解决方案是使用
$now=new\DateTime('now',new\DateTimeZone('UTC')然后
'mediated'=>$now->格式('Y-m-dh:i:s')
获取当前UTC时间。我将接受这个答案,因为它为我指明了正确的方向,但是您答案中的代码将失败,因为
DateTime(“now”)
应该是字符串,而不是对象(除非我选择将其存储为对象)@AdamElsodaney是的,我本以为dbal层会在这里接受一个
DateTime
对象,但我确实必须将我的
DateTime
格式化为
(new\DateTime())->格式('Y-m-dh:I:s')
,如你所说。谢谢你的回答。然而,我(应该说是我的合作开发者)决定使用
date\u default\u timezone\u set('GMT')
'mediated'=>日期('Y-m-dh:i:s')以获得所需的结果。我将检查这是否在其他应用程序中起作用,在这一点上,我会将其标记为已接受。现在我已经返回到Symfony2和条令开发,我想我应该重新讨论这个问题。解决方案是使用
$now=new\DateTime('now',new\DateTimeZone('UTC')然后
'mediated'=>$now->格式('Y-m-dh:i:s')
获取当前UTC时间。我将接受这个答案,因为它为我指明了正确的方向,但是您答案中的代码将失败,因为
DateTime(“now”)
应该是字符串,而不是对象(除非我选择将其存储为对象)@AdamElsodaney是的,我本以为dbal层会在这里接受一个
DateTime
对象,但我确实必须将
DateTime
格式化为
(new\DateTime())->格式('Y-m-dh:I:s')