/**
  * Выполняет удаление всех связей many_to_many сущности
  *
  * @param $oEntity
  * @param $sRelationKey
  */
 protected function _deleteManyToManyRelation($oEntity, $sRelationKey)
 {
     $aRelations = $oEntity->_getRelations();
     if (!isset($aRelations[$sRelationKey]['type']) or $aRelations[$sRelationKey]['type'] != EntityORM::RELATION_TYPE_MANY_TO_MANY) {
         return;
     }
     $aFilterAdd = $aRelations[$sRelationKey]['filter'];
     $oEntityRelation = Engine::GetEntity($aRelations[$sRelationKey]['join_entity']);
     /**
      * По сущности связи формируем запрос за получение списка сохраненых связей в БД
      */
     $sCmd = Engine::GetPluginPrefix($aRelations[$sRelationKey]['join_entity']) . 'Module' . Engine::GetModuleName($aRelations[$sRelationKey]['join_entity']) . '_Get' . Engine::GetEntityName($aRelations[$sRelationKey]['join_entity']) . 'ItemsByFilter';
     list($aFilter) = $this->oMapperORM->BuildFilter($aFilterAdd, $oEntityRelation);
     $aFilter[$aRelations[$sRelationKey]['join_key']] = $oEntity->_getPrimaryKeyValue();
     $aRelationItemsSaved = Engine::GetInstance()->_CallModule($sCmd, array($aFilter));
     foreach ($aRelationItemsSaved as $oRelation) {
         $oRelation->Delete();
     }
 }
示例#2
0
 /**
  * Удаление связи many_to_many в бд
  *
  * @param string $sDbTableAlias Алиас имени таблицы связи
  * @param string $sEntityKey    Название поля в таблице связи с id сущности, для которой удаляются связи.
  * @param int    $iEntityId     Id сущнсоти, для который удаляются связи
  */
 protected function _deleteManyToManySet($sDbTableAlias, $sEntityKey, $iEntityId)
 {
     $this->oMapper->deleteManyToManySet($sDbTableAlias, $sEntityKey, $iEntityId);
 }