Doctrine 中的过滤器
Posted
技术标签:
【中文标题】Doctrine 中的过滤器【英文标题】:Filters in Doctrine 【发布时间】:2009-08-19 14:36:40 【问题描述】:nHibernate 有一个很棒的功能叫做过滤器,所以我可以为我的应用程序全局创建标准。我正在用 php 开始一个项目,我需要使用 ORM,我想知道 Doctrine 是否有类似的功能来管理查询条件。
谢谢
【问题讨论】:
【参考方案1】:Doctrine 2.2 具有filter system,允许开发人员将 SQL 添加到查询的条件子句中,而不管 SQL 生成的位置(例如,从 DQL 查询,或通过加载关联实体)。
过滤器功能适用于 SQL 级别。 SQL 查询是在 Persister 中、在延迟加载期间、在额外的延迟集合中还是从 DQL 中生成的。每次系统迭代所有启用的过滤器时,都会添加一个新的 SQL 部分作为过滤器返回。
通过在查询的条件子句中添加 SQL,过滤系统在 SQL 结果集级别过滤掉属于实体的行。这意味着过滤后的实体永远不会被水合(这可能很昂贵)。
【讨论】:
【参考方案2】:我认为您正在寻找的是 Doctrine Query Hooks。
有许多用于 preUpdate、preSave、preCreate、postCreate、postUpdate、postSave、preSelect 等的钩子。
希望这会有所帮助。
【讨论】:
-1:这不是Hibernate Filters 提供的功能。 认真的吗?您要否决一个 3 岁的答案? Doctrine 当时甚至没有过滤器。您可以将其标记为已过时。以上是关于Doctrine 中的过滤器的主要内容,如果未能解决你的问题,请参考以下文章
如何在symfony中禁用doctrine的软删除(软删除)过滤器
如何使用 Symfony ACL 过滤我的 Doctrine 查询