我知道在我的问题中有一些关于stackoverflow的帖子,但是没有一个响应似乎对我有用,这就是我在这里发帖的原因。
我有一个带有created_at和updated_at的类,两者都期望有一个日期时间值
在我的二传手中,我有:
$date = new \DateTime('now');
$stimestamp = $date->format('M-d-Y H:i:s');
$this->setUpdatedAt($stimestamp);
使用以下
时会发生同样的错误 $this->setUpdatedAt(strtotime($stimestamp));
我收到以下错误: 错误:在字符串
上调用成员函数format()我的Oracle数据库期望日期时间跟随'DD-MON-YYYY',但是doctrine正在生成查询'Y-d-M'我认为是UNIX格式。
如何解决我可以发送正确的日期时间值和格式?
答案 0 :(得分:0)
尝试使用它,如果它可以解决问题(当然不要忘记根据你的语言环境改变格式字符串)。
$em = $this->get('doctrine.orm.default_entity_manager');
$dbh = $em->getConnection();
$sth = $dbh->prepare("ALTER SESSION SET NLS_TIME_FORMAT = 'HH24:MI:SS' NLS_DATE_FORMAT = 'YYYY-MM-DD HH24:MI:SS' NLS_TIMESTAMP_FORMAT = 'YYYY-MM-DD HH24:MI:SS' NLS_TIMESTAMP_TZ_FORMAT = 'YYYY-MM-DD HH24:MI:SS TZH:TZM'");
$sth->execute();
答案 1 :(得分:0)
我在Stackoverflow上的另一篇文章中找到了解决方案,不幸的是我丢失了链接。 Jan Rydrych的回答是正确的,但我不想在控制器类上应用他的解决方案,而是想让它成为全球性的。
在symfony中,在服务下我添加了以下内容:
应用程序/ config.services.yml
oci8.listener:
class: Doctrine\DBAL\Event\Listeners\OracleSessionInit
arguments:
- { NLS_TIMESTAMP_TZ_FORMAT: "YYYY-MM-DD HH24:MI:SSTZH:TZM" }
tags:
- { name: doctrine.event_listener, event: postConnect }
以上解决了这个问题。
谢谢大家的帮助。