Когда я тестировал свое приложение, я обнаружил, что использование 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 установить 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-данные /tmp/xdebug
chmod 774 /tmp/xdebug
Затем я использую KCachegrind, чтобы посмотреть результат, надеюсь, это поможет.
person
Max Gordon
schedule
07.01.2011