辨别主义关系

时间:2013-03-18 18:44:26

标签: php doctrine-orm

是否可以区分Doctrine中关系中填充的行?

例如:我有一对多的关系,其中目标实体具有deleted列。我希望此列设置为true的任何行都不会在集合中结束。

我在文档中找不到这样的内容,所以有可能甚至不可能。

2 个答案:

答案 0 :(得分:2)

不,你不能在水化过程中区分行。

您可以使用SQL filter来过滤来自数据库的任何数据,或使用criteria APIexample here)过滤您的getter中的集合自Doctrine 2.3以来:

public function getUsers()
{
    $criteria = new \Doctrine\Common\Collections\Criteria();

    $criteria->andWhere($criteria->expr()->eq('deleted', false));

    return $this->users->matching($criteria);
}

答案 1 :(得分:0)

还有一个使用过滤器的“softdelete”扩展名。这在我看来是一个更清洁的解决方案,你不必在每个吸气剂中重复任务。您可以默认激活过滤器,在极少数情况下,您需要删除记录,您可以停用过滤器。我认为它也会更高效: https://github.com/l3pp4rd/DoctrineExtensions