Для реализации вашей задачи нужно, чтобы контроллер выполнил такой вот запрос:
(SELECT * FROM `informationsystem_items` WHERE `informationsystem_group_id` = 10 ORDER BY `datetime` DESC LIMIT 5)
UNION
(SELECT * FROM `informationsystem_items` WHERE `informationsystem_group_id` = 11 ORDER BY `datetime` DESC LIMIT 5)
UNION
(SELECT * FROM `informationsystem_items` WHERE `informationsystem_group_id` = 12 ORDER BY `datetime` DESC LIMIT 5)
Проблема, однако, заключается в том, что до сих пор (HostCMS 6.5.7) в
modules/core/querybuilder/select.php не реализован метод unionOrderBy().
Точнее он есть, но он пустой. А без этого метода мы не сможем выбрать в каждом SELECT-е
самые "свежие" статьи (т.к. не работает "внутренняя" сортировка).
Однако есть способ (не совсем в духе ORM и совсем не универсальный):
1) "вручную" выполнить SQL запрос, и, получив на выходе ORM объекты, опять же,
2) "вручную" передать их в XSL-шаблонизатор
$oInformationsystemControllerShow
->xsl(Core_Entity::factory('Xsl')->getByName('My XSL Template'))
// LIMIT = 0 - т.е. сам контроллер не будет отбирать никакие ИЭ
->limit(0);
$aGroups = array(10, 11, 12);
foreach ($aGroups as $groupId) {
$aObj = Core_QueryBuilder::select('*')
->from('informationsystem_items')
->where('informationsystem_group_id', '=', $groupId)
->where('deleted', '=', 0)
->orderBy('datetime', 'DESC')
->limit(5)
->execute()
->asObject('Informationsystem_Item_Model')
->result();
$oInformationsystemControllerShow
->addEntities($aObj);
}
$oInformationsystemControllerShow->show();
з.ы.
Код не отлаживался, возможны баги
з.ы.ы.
Понятно, что этот код начисто лишен дополнительных "фич", реализуемых контроллером
показа (например, нужны дополнительные для получения доп.свойств инфоэлементов)