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

时间:2012-03-05 15:42:31

标签: orm lazy-loading typo3 extbase

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

有两个主要用例,我需要让所有foo匹配一些标准。在案例A中,我关心附在每个foo上的条形,如果是B,我不是。有很多条形,所以简单地总是加载条形对于案例A的性能不利。同样,如果不加载条形条件,则会导致案例B的n + 1雪崩。所以既没有标记为@Lazy的现实也不是标记它是正确的选择。

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

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

有什么建议吗?

2 个答案:

答案 0 :(得分:2)

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

我认为关闭这个问题,虽然不是我喜欢的方式。

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

答案 1 :(得分:0)

如何让它变得懒惰并在需要时将其转换为数组? (foo->酒吧,>指定者())