ORM, many_to_many и несколько условий

Есть две таблицы Item и Category, связанные связью many_to_many через третью таблицу Link

Отношения Item:
protected $aRelations = array(
        'categories' => array(self::RELATION_TYPE_MANY_TO_MANY, 'PluginA_ModuleItem_EntityCategory', 'category_id', 'db.table.link', 'item_id'),
);

Отношения Category:
protected $aRelations = array(
        'items' => array(self::RELATION_TYPE_MANY_TO_MANY, 'PluginA_ModuleItem_EntityItem', 'item_id', 'db.table.link', 'category_id'),
);


Можно ли через ORM получить Itemы, принадлежащие определеннЫМ категориям и удовлетворяющие определенным условиям самой таблицы Items?.. Если бы речь шла об одной категории там все понятно, плясалось бы «от противного», то есть бралась бы эта самая категория и получались бы по фильтру айтемы, принадлежащие ей. А вот если хочется из нескольких категорий получить? Есть ORM путь или обратно к мэпперам?

Еще один вопрос по ORM

Всем привет!

Есть три таблицы:



Связь Entry описана:

    protected $aRelations = array(
        'resources' => array(self::RELATION_TYPE_MANY_TO_MANY,'ModuleResource_EntityResource', 'resource_id', 'db.table.resource_to_entry', 'entry_id')
    );


При запросе типа…
$colEntries = $this->Entry_GetEntryItemsByFilter(array(
                                                       'status'=>'published',
                                                       '#with' => array(),
                                                       '#order'=>array('date_begin' => 'asc'),
                                                       '#page' => array($page,$perpage)
                                                     ));


… загружается коллекция записей. В дальнейшем, при обходе коллекции в каждой итерации выполняется код:

$oEntry->getResources(array('resource_type'=>'IMAGE_THUMB_ENTRY_TYPE1','deleted'=>0)


Все работает, но не устраивает поток запросов к БД :(

Вопрос знатокам:

Есть ли способ загрузки всей коллекции ресурсов (к каждой записи entry) на этапе вызова Entry_GetEntryItemsByFilter?

Пробовал через #with. Не получилось. Утыкается в проверку типа связи, где и вызывает исключение.

Связи many to many в ORM

В транковой версии появилась полноценная поддержка связей типа many to many. Это значит, что теперь вся забота о поддержании, например, тегов в ваших плагинах ложится на ОРМ.

Читать дальше →