Extbase:在运行时选择延迟或急切加载

adh*_*nem 6 orm lazy-loading typo3 extbase

我有一个域对象Foo,它与域对象Bar有1:n的关系.

有两个主要用例,我需要让所有foo匹配一些标准.在案例A中,我关心附在每个foo上的条形,如果是B,我不是.有相当多的酒吧,于是干脆总是加载条不利于案件A的表现同样不加载条急切地将导致N + 1个雪崩万一B.所以既不标注维吾尔语为@Lazy也不是标记它是正确的选择.

现在,我的问题:是否有可能在查询时告诉extbase持久层是懒惰还是急切?如果有,怎么样?如果不是,在Extbase中是否有另一种方法可以避免n + 1问题(即加载所有必要的条,然后希望缓存在foos中时缓存)?

当然,我的最后一种方法是加载延迟加载的foos,在第二个查询中手动加载条形图,然后手动设置关系.

有什么建议?

adh*_*nem 2

在过去的几个月里,我一直在研究 Extbase 并深入研究其内部结构,结果是:这是不可能的。

我想这已经结束了这个问题,尽管不是我想要的方式。

实际上,更糟糕的是:根本没有实现热切加载,根据文档设置关系的热切加载的 @eager 标记被忽略。

  • 对于最后一部分:预加载是默认的,因此没有“@eager”标签。您可以使用“@lazy”标签将此行为更改为懒惰。 (2认同)