1

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

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

我在文档中找不到类似的东西,所以这甚至是不可能的。

4

2 回答 2

2

不,您不能在水合期间区分行。

您可以做的是使用SQL 过滤器来过滤来自数据库的任何数据,或者使用标准 API此处示例)过滤您的 getter 中的集合,该 API 从Doctrine 2.3开始可用:

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

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

    return $this->users->matching($criteria);
}
于 2013-03-18T19:40:11.900 回答
0

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

于 2013-04-08T08:35:41.583 回答