Мои 2 цента:
HYDRATE_OBJECT
лучше всего подходят, когда вы планируете использовать много бизнес-логики с вашими объектами.Особенно, если вы делаете много манипуляций с данными.Это также, вероятно, самый медленный (в зависимости от ситуации).
HYDRATE_ARRAY
обычно зарезервирован для случаев, когда вам нужен только результат и 1 степень реляционных данных, и он будет использоваться только для целей печати / просмотра.
HYDRATE_NONE
- это еще один вариант, который я использую, когда выбираю только очень маленькое подмножество данных (например, одно или два поля вместо всей строки).Это ведет себя так же, как необработанный результат запроса.
Это также может представлять интерес http://www.doctrine -project.org / 2010/03/17 / doctrine-performance-revisited.html
Это из 1.2 документов, но я думаю, что советы по гидратации применимы в 2.0 http://doctrine.readthedocs.org/en/latest/en/manual/improving-performance.html
Еще одно важное правило, относящееся к этой категории: выбирайте объекты только тогда, когда они действительно нужны,В Doctrine есть возможность извлекать «графы массивов» вместо графов объектов.На первый взгляд это может звучать странно, потому что зачем тогда использовать объектно-реляционный картограф?Потратьте секунду, чтобы подумать об этом.PHP по своей природе является преддуральным языком, который был расширен множеством функций для достойного ООП.Массивы по-прежнему являются наиболее эффективными структурами данных, которые вы можете использовать в PHP.Объекты имеют наибольшую ценность, когда они используются для выполнения сложной бизнес-логики.Это бесполезная трата ресурсов, когда данные оборачиваются дорогостоящими объектными структурами, если вы не пользуетесь этим
При использовании HYDRATE_ARRAY
:
Можете ли вы подумать о какой-либо выгодеиметь объекты в виде вместо массивов?Вы не собираетесь выполнять бизнес-логику в представлении, не так ли?Один параметр может сэкономить вам массу ненужной обработки:
$blogPosts = $q->execute(array(1), Doctrine_Core::HYDRATE_ARRAY);