Важно отметить, что вы можете использовать $query->statement($sql, $params)
.
Это один из самых популярных методов запроса:
http://lbrmedia.net/codebase/Eintrag/extbase-query-methods/
Если вы используете это, вы можете написать оператор select
, который включает в себя только выбор полей. Построитель объектов модели T3 возьмет выбранные вами строки и поля и создаст объекты модели на основе доступной информации.
Так, например, предположим, что мы сначала пишем:
...
$query = $this->createQuery();
$result = $query->execute();
return $result;
Таким образом, вы получите список объектов с каждым полем члена объекта, также инициализированным с полным объектом.
Но если мы напишем, например:
$query = $this->createQuery();
$query->statement('select uid from tx_my_table'); // <<<<<<<<
$result = $query->execute();
return $result;
Тогда вы все равно получите список объектов, , но единственное поле-член, имеющее реальное значение, - uid
. Таким образом, вы также можете выбрать поле, которое указывает на некоторые отношения m: m. Это будет обработано.
Это может принести огромный прирост скорости.
Предостережение в том, что репозиторий extbase T3 каким-то образом слегка создает смесь между вашим чистым sql и некоторыми внутренними спецификациями. Я полагаю, что некоторые дополнительные подсказки могут быть найдены поиском TYPO3 convertQueryToDoctrineQueryBuilder. Кроме того, вы должны переписать свои собственные ограничения запросов, которые обычно задаются $querySettings
. Но, эй, это открытая дверь для оптимизации.