6

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

有两个主要用例,我需要让所有 foo 匹配某个标准。在情况 A 中,我关心附加到每个 foo 的条,在情况 B 中,我不关心。有很多条,所以总是加载条不利于案例 A 的性能。类似地,不急切地加载条会在案例 B 中导致 n+1 雪崩。所以既不将 realtion 标记为@Lazy也不标记它是正确的选择。

现在,我的问题是:是否可以在查询时告诉 extbase 持久层是懒惰还是急切?如果是,如何?如果不是,Extbase 中是否有另一种方法来避免 n+1 问题(即加载所有必要的柱,然后希望在迭代 foo 时缓存起作用)?

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

有什么建议么?

4

2 回答 2

2

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

我想这结束了这个问题,虽然不是我想要的方式。

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

于 2012-09-16T16:36:45.087 回答
0

让它变得懒惰并在需要时将其转换为数组怎么样?(foo->bar->toArray())

于 2012-10-04T14:15:23.527 回答