我正在尝试在 symfony2 项目中将教义与 oracle 10g 数据库一起使用。
一切正常,但是当我尝试在表中插入带有日期列的行时,出现以下错误:
[PDOException] SQLSTATE[HY000]:一般错误:1850 OCIStmtExecute:ORA-01850:ORA-01850:小时必须在 0 到 23 之间(ext\pdo_oci\oci_statement.c:148)
根据How to use Doctrine OracleSessionInit listener with Symfony2? 可以通过将 Doctrine\DBAL\Event\Listeners\OracleSessionInit 类添加到 Doctrine 中的事件管理器来修复此错误。
app/config/config.yml
services:
my.listener:
class: Doctrine\DBAL\Event\Listeners\OracleSessionInit
tags:
- { name: doctrine.event_listener, event: postConnect }
我尝试了这个解决方案,但它对我不起作用。所以我通过我的控制器手动将侦听器添加到学说中的 eventManager :
public function indexAction()
{
$product= new Product();
$product->setCreationDate(new \DateTime());
$this->getDoctrine()->getConnection()->getEventManager()->addEventSubscriber($this->get('my.listener'));
$em->persist($product);
$em->flush();
return array();
}
这是可行的,但这并不是很优雅,我不想对我所有的控制器都这样做......
所以我的听众似乎工作正常。在我看来,要么 postConnect 事件永远不会被触发,要么我的 config.yml 错误并且监听器没有正确设置。
一些帮助将不胜感激。
谢谢你。