Когда я тестировал свое приложение, я обнаружил, что использование Doctrine_Core :: HYDRATE_ARRAY имело большое значение.При использовании только в представлении это часто имеет смысл.
Если вам нужны более сложные вложенные наборы, может быть лучше просто использовать Doctrine_Query.
То, что вы хотите - это, вероятно, запрос наподобиеэто:
$query = Doctrine_Query::create();
$query->from('Model_Category cat')
->leftJoin('cat.Node n')
->leftJoin('n.Childre c')
->where('count(c.id) > 0')
->andWhere('cat.id = ?', $id);
$query->execute(array(1), Doctrine_Core::HYDRATE_ARRAY)
Профилирование Xdebug может быть очень полезным, если вы используете Ubuntu:
sudo apt-get install php5-xdebug
Тогда:
sudo gedit /etc/php5/apache2/conf.d/xdebug.ini
В xdebug.ini у меня есть:
zend_extension=/usr/lib/php5/20090626+lfs/xdebug.so
xdebug.profiler_enable=on
xdebug.profiler_output_dir="/tmp/xdebug"
xdebug.profiler_output_name = "cachegrind.out.%H.%R.%t"
Не забудьте создать каталог:
mkdir / tmp / xdebug
sudo chgrp www-data / tmp / xdebug
chmod 774 / tmp / xdebug
Затем я использую KCachegrind для просмотра результатов, надеюсь, это поможет