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回调?
由于
答案 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
清除缓存。