Здравствуйте!
В процессе изучения Симфони возникла необходимость загрузки из БД 40-50 объектов с 5-6кб текста. Эти объекты загружаются на каждой странице сайта - категорий и теги. Да, у каждого тега и категории есть текст до 5-6кб, но этот текст выводится только для активной категории/тега - остальные, соответственно, просто нагружают сервер. Я сделал отдельный метод в репозитории, который бы возвращал не все данные категории, а только необходимые:
$query = $qb
->select('c.id, с.title, с.slug')
->getQuery();
return $query->getResult();
В итоге я получил массив, а не объекты типа Category - так я узнал, что чтобы получить частично загруженный объект, необходимо использовать механизм Doctrine частичной загрузки объектов, у которого есть особенность - если после этого запросить уже загруженный PARTIAL объект, то доктрина вернет его же, а не полноценный.
Получается, что для увеличения производительности можно использовать два метода:
- простые массивы
- и Partial объекты.
В админке, в том проекте который я сейчас делаю, я не вижу пока смысла сильно беспокоиться о производительности - нет там и такого трафика, и списка категорий на каждой странице. Так что там, я буду использовать полностью загруженные объекты.
А вот с публичной частью хочется и о производительности подумать, и просто разобраться в теме - что лучше использовать в подобных случаях: массивы, или partial объекты?
С одной стороны использование массивов - простое и быстрое решение для вывода того же списка категорий на каждой странице сайта. Но с другой стороны - это же не объекты уже, и получается что в разных частях проекта могут быть разные типы данных одной сущности - где то объекты, а вот тут и там массивы.
Подскажите, пожалуйста:
1. В каких случаях вы используете Partial объекты?
2. Используете ли массивы и в каких случаях?
Спасибо!