cal*_*die 21 orm doctrine datamapper entitymanager doctrine-orm
我有我想要加载的实体,以及其他ocassions懒惰(甚至是额外的懒惰)加载.
我的映射没有在我的YAML中声明的获取模式 - 因此它们使用默认值(延迟加载).
目前,热切加载的唯一方法是手动构建DQL - 每次添加新实体时我都需要更新它.
理想情况下,我只是加载根实体和强制加载所有关联对象的力.有什么方法可以做到这一点吗?
如果不是为什么(是否有一个原因超出它是一个未实现的功能)?
tim*_*dev 22
如果你想使用内置的存储库方法(find(),findAll()),你可能会运气不好,除非你把注意事项设置为急切加载注释.
您可能希望在某些自定义存储库的方法中使用查询构建器(或原始DQL)来强制在您想要的位置加载.是的,你必须在添加实体时更新该方法,但至少你总是知道懒惰/急切加载的情况,你只需要在一个地方维护它.
我认为没有一些$ eagerLoad标志来查找()等的原因是因为这些是简单任务的便捷方法.如果你想添加这样一个标志,你很快就会陷入需要通过深度限制递归预加载的情况.你也可能不得不开始担心周期性引用(例如任何双向关联).
小智 22
您可以使用setFetchMode()DQL方法来设置模式.请参阅文档:http:
//readthedocs.org/docs/doctrine-orm/en/latest/reference/dql-doctrine-query-language.html#temporarily-change-fetch-mode-in-dql
| 归档时间: |
|
| 查看次数: |
26141 次 |
| 最近记录: |