Doctrine orm 原则2-基于ACL筛选加载的实体

Doctrine orm 原则2-基于ACL筛选加载的实体,doctrine-orm,acl,Doctrine Orm,Acl,条令2中的事件侦听器非常有用。我可以使用它们在实体创建、更新和删除时有效地实现ACL。但是,我找不到加载实体的方法 加载实体后会触发postLoad事件,我可以在事件侦听器中检查ACL,但我该怎么办?我想悄悄地从结果集中删除具有ACL deny的实体,以便只返回用户有权查看的那些实体 在侦听器中,我尝试了$entity=null和unset($entity),但这两种方法都不起作用,因为UOW仍然持有引用。我可以使用$entitymanager->detatch($entity),但这只会将其从

条令2中的事件侦听器非常有用。我可以使用它们在实体创建、更新和删除时有效地实现ACL。但是,我找不到加载实体的方法

加载实体后会触发postLoad事件,我可以在事件侦听器中检查ACL,但我该怎么办?我想悄悄地从结果集中删除具有ACL deny的实体,以便只返回用户有权查看的那些实体

在侦听器中,我尝试了
$entity=null
unset($entity)
,但这两种方法都不起作用,因为UOW仍然持有引用。我可以使用
$entitymanager->detatch($entity)
,但这只会将其从实体管理器中删除,而不会销毁实体


那么,有什么方法可以实现我想要实现的目标吗?也许有不同的路径?

实现这一点的方法是使用条令过滤器。实体中需要有一个字段,您可以对其进行筛选,然后离开。无需使用后加载事件侦听器。看