nHibernate 有一个很棒的功能叫做过滤器,所以我可以为我的应用程序全局创建标准。我正在用 PHP 开始一个项目,我需要使用 ORM,我想知道 Doctrine 是否具有类似的功能来管理查询条件。
谢谢
nHibernate 有一个很棒的功能叫做过滤器,所以我可以为我的应用程序全局创建标准。我正在用 PHP 开始一个项目,我需要使用 ORM,我想知道 Doctrine 是否具有类似的功能来管理查询条件。
谢谢
Doctrine 2.2 具有过滤系统,允许开发人员将 SQL 添加到查询的条件子句中,而不管 SQL 生成的位置(例如从 DQL 查询,或通过加载关联实体)。
过滤器功能适用于 SQL 级别。SQL 查询是在 Persister 中、在延迟加载期间、在额外的延迟集合中还是从 DQL 中生成的。每次系统迭代所有启用的过滤器时,都会添加一个新的 SQL 部分作为过滤器返回。
通过将 SQL 添加到查询的条件子句中,过滤系统在 SQL 结果集级别过滤掉属于实体的行。这意味着过滤后的实体永远不会被水合(这可能很昂贵)。
我认为您正在寻找的是 Doctrine Query Hooks。
preUpdate、preSave、preCreate、postCreate、postUpdate、postSave、preSelect 等有许多钩子。
希望这可以帮助。