Используйте Doctrine для предварительной загрузки отношений с помощью одного запроса JOIN.Php

Кемеровские программисты php общаются здесь
Ответить
Anonymous
 Используйте Doctrine для предварительной загрузки отношений с помощью одного запроса JOIN.

Сообщение Anonymous »

У меня есть сущность Author со связью с Book, где у автора много книг.
У меня в библиотеке много книг, и я хочу чтобы получить их все вместе с информацией об авторе за один раз с помощью JOIN. Не имеет значения, получу ли я их немедленно, я просто хочу загрузить их в память.

Код: Выделить всё

            $entities = $this->bookRepository
->createQueryBuilder('book')
->join('book.author', 'a')
->getQuery()
->setFetchMode(Author::class, 'author', ClassMetadataInfo::FETCH_EAGER)
->getResult();
Это создает запрос SELECT для моих книг (выбирая все поля «Книги») с INNER JOIN для автора (не выбирая поля). В результате к таблице Author поступает много запросов, поскольку они не извлекаются и не сохраняются в единице работы.
Я хочу уменьшить количество SQL-запросов и использовать это JOIN также загружает автора в память и прикрепляет его к единице работы (или кэширует).
Я очень удивлен, что не существует простого способа сделать это. Я что-то пропустил? Спасибо

Подробнее здесь: https://stackoverflow.com/questions/786 ... join-query
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «Php»