【问题标题】:PHP Symfony Doctrine - How/where to enable DQL Callbacks?PHP Symfony Doctrine - 如何/在哪里启用 DQL 回调?
【发布时间】:2010-10-14 13:25:06
【问题描述】:

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

您需要启用 DQL 回调,以便所有已执行的查询都能在其上执行 dql 回调。在 SoftDelete 行为中,它们用于过滤选择语句以排除所有设置了 deleted_at 标志并带有附加 WHERE 条件的记录。

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

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

查看文档,我觉得这与 symfony 中未启用 DQL 回调有关。谷歌搜索没有帮助。

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

谢谢

【问题讨论】:

    标签: php symfony1 doctrine


    【解决方案1】:

    你也可以在databases.yml文件中做

    all:
      doctrine:
        class: sfDoctrineDatabase
        param:
          dsn:      mysql:host=localhost;dbname=database
          username: user
          password: password
          attributes:
            use_dql_callbacks: true
    

    【讨论】:

      【解决方案2】:

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

      config/ProjectConfiguration.class.php

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

      别忘了$ ./symfony cc 清除缓存。

      【讨论】:

      • 在 1.4 文档中也提到过:symfony-project.org/more-with-symfony/1_4/en/…
      • 很遗憾没有通过谷歌找到它。不过,感谢您的评论,将尝试更好地记住 symfony 文档。不是内容,但至少让我知道下次去哪里看;)
      • 是的,谷歌通常会找到旧文档。在查询字符串中使用 'symfony 1.4' 而不是 'symfony' 通常会有所帮助。
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-07-29
      • 2012-01-08
      • 2012-01-10
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多