Установка дополнительных параметров для фильтра при вызове связи сущности ORM

Как известно в ORM LiveStreet CMS есть возможность указывать связи для сущности:

/*
 * Связи сущности
 */
protected $aRelations = array(
  /*
   * tip: сущности записывать в полном формате
   */
  'link_name' => array(EntityORM::RELATION_TYPE_HAS_MANY, 'ModuleTest_EntityTest', 'rel_row_id'),
);


После этого из сущности будет доступен метод:

$oEntity->getLinkName()


который получит многие сущности ModuleTest_EntityTest по столбцу таблицы rel_row_id, который указывает на примари ключ текущей сущности. Это стандартная запись.

Проблема

Возникла задача добавить дополнительные параметры в эту запись и оказалось что такой возможности нет. Тикет на гите я уже оформил по этому поводу В новой версии лс для связей has_many данная проблема решена, осталось искать решение для текущей 1.0.3 версии лс.

Решение

Можно указывать дополнительный фильтр в самом вызове метода для связи:

$oEntity->getLinkName(array('status' => 2))


Таким образом будут получены сущности с использованием дополнительного условия в WHERE выражении:

... AND `status` = 2


Примечание: данное поведение может казаться логичным т.к. вызовы из модуля ОРМ ведут себя аналогично — позволяют указывать дополнительные параметры для фильтра, но в случае связей хотелось бы параметры в объявлении связей.

Надеюсь, кому-то эта статья оказалась полезной.

Это кросспост из гида по лс.

0 комментариев

Только зарегистрированные и авторизованные пользователи могут оставлять комментарии.