Как получить элементы групп?

#
Как получить элементы групп?
У меня есть код, который выводит по 12 групп, что мне нужно дописать, чтобы оно еще и элементы этих групп передавала в xml шаблон, есть group(FALSE); но она берет из всех групп, а мне нужно только из этих.
if ($Informationsystem_Controller_Show->group == 0)
{
  $Informationsystem_Controller_Show
        ->xsl(Core_Entity::factory('Xsl')->getByName($xslName))
        ->groupsProperties(TRUE)
        ->itemsProperties(TRUE)
        ->informationsystemGroups()
        ->queryBuilder()
        ->limit(12);

    // Выполняем запрос и получаем группы
    $groups = $Informationsystem_Controller_Show->informationsystemGroups()->findAll();

    // Получаем ID групп
    $groupIds = array_map(function($group) {
        return $group->id;
    }, $groups);

    // Используем ID групп для получения элементов
    $Informationsystem_Controller_Show
        ->informationsystemItems()
        ->queryBuilder()
        ->where('informationsystem_group_id', 'IN', $groupIds);
    $Informationsystem_Controller_Show->show();
    exit();
}
Модератор
#
Re: Как получить элементы групп?
Судя по коду, вы выбираете 12 товаров из указанных групп ->limit(12)
вместо 12 укажите, например, 99

Также Ид групп можно контроллеру передавать в опции ->group(array(1,2,3,4))
#
Re: Как получить элементы групп?
Это лимит групп, а не товаров. Мне нужно было реализовать, чтобы выводилось сначала 12 групп, потом AJAX еще 12 групп подгружалось и т.д. Я это реализовал, даже id этих групп получаю, но мне нужно картинки вытянуть элементов которые в этих группах лежат, но вот этот контролер не срабатывает
- $Informationsystem_Controller_Show
        ->informationsystemItems()
        ->queryBuilder()
        ->where('informationsystem_group_id', 'IN', $groupIds);

Пустоту находит.
Модератор
#
Re: Как получить элементы групп?
Лимит у контроллера показа Informationsystem_Controller_Show это все же лимит выводимых информационных элементов, на группы он никак не влияет, мы настаиваем на этих сведениях.

Как указать ИД групп, чтобы выводились элементы из них, написали в предыдущем ответе.
#
Re: Как получить элементы групп?
Спасибо за помощь, еще один вопрос.
Не могу понять как id получить из групп которые в лимит попадают.
  $Informationsystem_Controller_Show
        ->xsl(Core_Entity::factory('Xsl')->getByName($xslName))
        ->groupsProperties(TRUE)
        ->itemsProperties(TRUE)
        ->informationsystemGroups()
        ->queryBuilder()
        ->limit(12);

    // Выполняем запрос и получаем группы
    $groups = $Informationsystem_Controller_Show->informationsystemGroups()->findAll(FALSE);

    // Получаем ID групп
    $groupIds = array_map(function($group) {
        return $group->id;
    }, $groups);
    var_dump($groupIds);

Все id правильные кроме нулевого и последнего совсем нету
[codearray(12) { [0]=> string(4) "2274" [1]=> string(4) "4118" [2]=> string(4) "4106" [3]=> string(4) "4072" [4]=> string(4) "4108" [5]=> string(4) "4092" [6]=> string(4) "4177" [7]=> string(4) "4080" [8]=> string(4) "4175" [9]=> string(4) "4112" [10]=> string(4) "4090" [11]=> string(4) "4120" }][/code]
Модератор
#
Re: Как получить элементы групп?
informationsystemGroups() не предназначен для выборки групп снаружи контроллера. Через него вы можете добавить какие-то внешние ограничения для контроллера, выбирайте группы через ORM не трогая $Informationsystem_Controller_Show->informationsystemGroups()

Группы вещь иерархическая, нельзя написать limit(12) для QB групп и ожидать, что выберется дерево групп именно на ваши ожидаемые 12 штук, могут выбраться потомки без родителей и никакая группа вообще не добавится в XML, т.к. их родители не будут вами выбраны.
Авторизация