У меня есть продукта объекта, который также объединяющие несколько «массива объектов» собственность, категория, цвет, размер и т.д. теперь у меня есть база данных, которая содержит таблицы по каждому объекту ... Продукты, свойства, категории, цвета, размеры и т. Д. Теперь мой запрос на получение списка продуктов имеет 7-8 соединений, так как в моей базе данных есть несколько других таблиц, которые содержат много-много отношений для продуктов и связанных с ним.PHP - Наполнение агрегированных объектов - Best Practice
Все в порядке. Теперь проблема возникает, когда я извлекаю данные из PDO и должен заполнять свой продукт вместе со всеми его агрегированными объектами. Мне нужно сделать много вложенных циклов, чтобы заполнить мой массив объектов Продукта, который является довольно громоздкой деятельностью и, похоже, не является хорошей практикой программирования (интуитивно).
Я не хочу использовать ORM, поскольку, на мой взгляд, ОРМ очень неэффективны для такого количества объединений.
Какова наилучшая практика для такого рода ситуаций.
Большое спасибо за ваше время.
Edit: (на основе комментариев KIKO Software)
Где положение большинства моих поисковых продукт запросов, должен содержать условия, связанные с его агрегированных субъектов, и как я уже писал ранее, у меня есть некоторые многие ко многим отношений. Таким образом, это означает, что я уже использую ресурсы базы данных «даже», если я иду на ленивую загрузку. Итак, в таком случае, если бы я загрузил подмножество моего результата, то интересная загрузка была бы лучшим выбором? Если так, снова мой первоначальный вопрос остается таким же; не могу ли я избежать слишком многих вложенных циклов для загрузки агрегированных объектов?
Благодаря
Благодарим за решение, я могу посмотреть на него, чтобы узнать, подходит ли он в соответствии с потребностями. Есть ли другой способ обхода проблемы, если мне нужна интенсивная загрузка? Во-вторых, то, что обычно является причиной замедления процесса поиска: извлечение данных из базы данных или циклическое перемещение по каждой записи для заполнения объектов? (если размеры таблиц базы данных не слишком велики) – developer
На ваш первый вопрос должен быть дан ответ в ответе, а не в комментарии. Что касается вашего второго вопроса: доступ к базе данных замедляет работу гораздо больше, чем все, что вы делаете, чтобы сохранить извлеченные данные в php-объекте. Поэтому, когда вам не нужно обращаться к базе данных, вы не должны этого делать. Доступ к базе данных можно ускорить с помощью множества факторов, таких как: расположение сервера, скорость сервера, индексация, правильная нормализация данных и многое другое. Просто использование соединений не очень помогает. Но всякий раз, когда сомневаешься, измерь это –
Я отредактировал свой оригинальный вопрос на основе ваших комментариев. Спасибо, что дал мне направление. – developer