PHP Symfony Doctrine - 如何/在何处启用DQL回调?

时间:2010-10-14 13:25:07

标签: php symfony1 doctrine

http://www.doctrine-project.org/documentation/manual/1_0/ru/behaviors:core-behaviors:softdelete

  

您需要启用DQL回调,以便所有执行的查询都对它们执行dql回调。在SoftDelete行为中,它们用于过滤select语句,以排除使用其他WHERE条件设置deleted_at标志的所有记录。

我已经将模型行为设置为SoftDelete,当我$Model->delete()时,实际的数据库条目会按预期进行更改。

不幸的是,Doctrine::getTable('Model')->findAll()仍然包含记录,其中设置了deleted_at

仔细阅读文档,我觉得,这与在symfony中未启用的DQL回调有关。谷歌搜索没有帮助。

我如何以及在何处启用Symfony中的DQL回调?

由于

2 个答案:

答案 0 :(得分:3)

您也可以在databases.yml文件

中执行此操作
all:
  doctrine:
    class: sfDoctrineDatabase
    param:
      dsn:      mysql:host=localhost;dbname=database
      username: user
      password: password
      attributes:
        use_dql_callbacks: true

答案 1 :(得分:2)

好的,我在版本1.2的旧文档中找到了它 http://www.symfony-project.org/doctrine/1_2/en/03-Configuration

配置/ ProjectConfiguration.class.php

 public function configureDoctrine(Doctrine_Manager $manager)
  {
    $manager->setAttribute(Doctrine_Core::ATTR_USE_DQL_CALLBACKS, true);
  }

不要忘记$ ./symfony cc清除缓存。