symfony1 - Doctrine 记录监听器从未被解雇

标签 symfony1 doctrine symfony-1.4 doctrine-1.2

我正在尝试为所有模型创建一个记录监听器

在 ProjectConfiguration.class.php 中我添加了:

public function configureDoctrineConnection(Doctrine_Connection $connection)
{    
  $connection->addRecordListener(new doctrineLogger());    
}

我创建了 lib/doctrineLogger.class.php

class doctrineLogger implements Doctrine_Overloadable
{
  public function __call($m, $a)
  {
    echo 'caught event '. $m .'<br />';
  }
}

但是没有捕获任何事件。

当我尝试使用常规连接监听器时:

$connection->addListener(new doctrineLogger());

...和相同的doctrineLogger类,我正确地得到了预期的输出:

caught event preConnect
caught event preExec
caught event postExec
caught event postConnect
caught event prePrepare
caught event postPrepare
...

我做错了什么?我是否错误地实现了它?请帮忙,我一无所知。我第一次尝试使用 Doctrine 监听器。

最佳答案

是的,你做错了。看看 API 文档,发现这一点并不容易。该连接确实有一个从 Doctrine_Configurable 继承的 addRecordListener 方法。但是,它不能用于在连接级别添加全局记录监听器。相反,您应该将其添加到 Doctrine_Manager 实例中:

Doctrine_Manager::getInstance()->addRecordListener(new doctrineLogger());

可以查看record listeners here的引用文档.

关于symfony1 - Doctrine 记录监听器从未被解雇,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8000240/

相关文章:

php - 在 SQL 的 WHERE 中排序

php - 保存嵌入 sfForm

mysql - Doctrine 1 从具有 2 个别名的一张表中进行选择

php - 如何在 symfony 1.4 中缓存 session 相关数据?

php - Symfony 中 View 数量的单独表格

symfony1 - 如何创建需要访问其他字段值的 Symfony 验证器?

database - 使用执行的 Doctrine 查询

php - 什么是最好的 MVC、Doctrine2、Datamapper 实践?

php - 如何在 Symfony 中包含一个库

mysql - 使用 doctrine 和 symfony 在数据库上执行函数