Extbase: выберите ленивую или энергичную загрузку во время выполнения - PullRequest
6 голосов
/ 05 марта 2012

У меня есть доменный объект Foo, имеющий отношение 1: n к доменному объекту Bar.

Есть два основных случая использования, когда мне нужно, чтобы все foo соответствовали некоторому критерию. В случае A я забочусь о столбцах, прикрепленных к каждому foo, в случае B я не волнуюсь. Существует довольно много баров, поэтому простая всегда загрузка баров не годится для производительности в случае А. Аналогичным образом, если вы не загружаете бары с нетерпением, то в случае Б будет лавина n + 1. и не пометка это правильный выбор.

Теперь мой вопрос: можно ли сказать, что уровень сохраняемости extbase во время запроса, быть ленивым или нетерпеливым? Если да, то как? Если нет, есть ли другой способ в Extbase избежать проблемы n + 1 (то есть загрузить все необходимые столбцы, а затем надеяться, что кэширование работает при итерации по foos)?

Моим последним средством, конечно же, было бы загрузить foos с отложенной загрузкой, вручную загрузить столбцы во втором запросе, а затем вручную установить отношение.

Есть предложения?

Ответы [ 2 ]

2 голосов
/ 16 сентября 2012

Я играл с Extbase и углублялся во внутренности в последние несколько месяцев, и в результате получилось следующее: «Это невозможно».

Полагаю, это закрывает этот вопрос, хотя и не так, как мне хотелось бы.

На самом деле, еще хуже: активная загрузка вообще не реализована, тег @eager, который в соответствии с документацией устанавливает активную загрузку для отношения, игнорируется.

0 голосов
/ 04 октября 2012

как насчет того, чтобы оставить его ленивым и преобразовать его в массив при необходимости?(Foo-> бар-> ToArray ())

...