Условно у сущности много разных связей и у связей есть связи. При этом эти сущности не всегда нужны.
Может ли доктрина загрузить нужные связи сразу же при получении списка сущностей? Условно я получаю 100 пользователей и хочу получить сразу же их посты, комментарии, лайки, файлы и все остальное?
При этом в большинстве случаев загружать эти связи мне не надо.
Может ли доктрина сделать один запрос в главную таблица, один запрос в таблицу со связями и смапаить это все в сущности?
fetch="eager"
Это в аннотации сущности верно? Но оно же будет для всех запросов всегда
read model
У вас проблема с дизайном системы а не с доктриной. Просто когда вам надо это все показывать то делайте запрос в базу и отдавайте массив получившийся
тогда через квери билдер и отдельный метод в репо
Можно поподробнее?
Вам зачем столько данных надо в раз с базы тянуть? Предположу чтобы пользователю показать Ну вам для этого доктрина и объекты и гидрацию не надо просто читаете с базы массив и отдаете его куда вам там надо
подробнее - тебе не надо восстанавливать объекты в памяти, чтобы их обратно сериализовать и показать на фронте. Запрашивай массивами или DTO
Ну тут лишь пример, на самом деле. Есть сущность основная, вокруг которой строится предметная область - некий товар. У которого куча всяких свойств, типа различные цены, категории и тд
так ну и зачем вам все это в раз надо? Зачем вам все эти связи?
Какая нах предметная область для вывода юзеру на экран?
Чтобы отобразить пользователю
так для отобразить не нужна доктрина!
Я понял, использовать чистые (массив) и складывать в модельку
Может, вот решение: https://symfonycasts.com/screencast/doctrine-relations/join-n-plus-one
зачем вам моделька?
ну чтобы типизировать данные, туда сюда 🤔
Вам надо массив в json преобращовать и отправить не нужны никакие модельки
если только на чтение, зачем их типизировать в обе стороны, если очевидно тут только одна направленность - из БД в морду
у вас валидатор API (json schema например) может это хэндлить и тесты
просто всякие кеши есть. Я просто не настоящий симфонист/доктринист, поэтому у меня такие вопросы. Интересно было может ли доктрина делать запросики сразу, с минимум джойнов и тд (просто eloquent может это делать в нужный момент)
может конечно, но восстановление объектов в памяти - слишком дорогостоящая операция с учетом заджойненого датасета. Если тебе не нужны объекты в памяти, и ты просто их достаешь и тут же сериализуешь на отдачу - так может сразу доставать в сериализованном или подготовленном под сериализацию виде?
да, выглядит нормально, я запишу этот вариант 🙂
Обсуждают сегодня