Вывод всех подгрупп и элементов ИС

#
Вывод всех подгрупп и элементов ИС
Иерархия в ИС такова: Моя ИС -> Группа уровень 1 -> Группа уровень 2 -> Элемент ИС

Запрос в контроллере:
$Informationsystem_Controller_Show
    ->xsl( Core_Entity::factory('Xsl')->getByName($xslName) )
    ->group(false)
    ->itemsProperties(true)
    ->show();


В итоговом XML получаю описание:
+ Моя ИС
+ Группа уровень 1
+ Элемент ИС с его свойствами

Как получить еще и описание Группы уровень 2 ?

То есть, в итоговом XML я хочу получить всю иерархию:
+ Моя ИС
+ Группа уровень 1
+ Группа уровень 2
+ Элемент ИС с его свойствами

И смогу ли я в дальнейшем увеличить вложенность групп?
#
Re: Вывод всех подгрупп и элементов ИС
Все, нашел.

->groupsMode('all'
Модератор
#
Re: Вывод всех подгрупп и элементов ИС
mortimoro,
тогда уж лучше
->groupsMode('tree')
#
Re: Вывод всех подгрупп и элементов ИС
Я может что-то не так понял, но когда я вывожу данные таким образом:
$Informationsystem_Controller_Show
    ->xsl( Core_Entity::factory('Xsl')->getByName($xslName) )
    ->group(false)
    ->groupsMode('tree')
    ->itemsProperties(true)
    ->show();

то в XML выводятся только корневые группы и элементы, а подгруппы не отображаются.

Фишка в том, что мне фактически нужно вывести на одну страницу всю информационную систему: Группы 1 уровня, группы 2 уровня, группы 3 уровня, элементы, доп.свойства элементов. Причем без паджинации и сохраняя взаимосвязи с родительскими элементами.

А при том, что суммарный объем всех таблиц около 400 Кб, итоговый объем XML достигает почти 2 Мб за счет кучи мусора, выводимого попутно, и это ненормально. Я уже не говорю о том, что при объеме таблиц в 400 Кб, полезной информации, отдаваемой пользователю, не более 40 Кб. Так что либо я неправильно готовлю ваших кошек, либо КПД вашей CMS составляет около 2%. Как правильно поступить, чтобы снизить объем трафика?
Модератор
#
Re: Вывод всех подгрупп и элементов ИС
mortimoro,
Вы определенно неправильно готовите кошек, особо непонятно, какой объем трафика Вы собрались снижать, XML/XSL преобразования осуществляются на сервере.

Если Вы внимательно взглянете на свой код, то увидите, что устанавливаете группу false, это означает вывод элементов из всех групп, но для дерева групп это эквивалентно нулю, а ноль - это корень.
#
Re: Вывод всех подгрупп и элементов ИС
Про трафик глупость сморозил - не то имел в виду... фиг с ним. Я уже свою ошибку понял, порылся в исходниках, посмотрел как реализуются выборки и подход изменил, так что задача решена.

Еще интересует вопрос:
$start = microtime(1);
$Informationsystem_Controller_Show
    ->xsl( Core_Entity::factory('Xsl')->getByName($xslName) )
    ->group(false)
    ->groupsMode('all')
    ->itemsProperties(true)
    ->limit(20)
    ->show();
echo microtime(1) - $start;

Почему данная конструкция выполняется 1,9 секунды при лимите в 20 записей, а запрос через QueryBuilder с 8 join'ами без лимита (около 2000 записей), реализующий ту же выборку данных, выполняется максимум за 0,4 секунды?
Такое впечатление, что он результаты выборки в Китай отправляет и тыща китайцев модерируют данные, перед тем, как мне их отдать.
Модератор
#
Re: Вывод всех подгрупп и элементов ИС
mortimoro,
а сколько всего страница генерируется? Включите панели и посмотрите время обработки XML, нужно выяснить в каком месте затык - на выборках SQL или на XML/XSL

Авторизация