/** * Выполняет удаление всех связей 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(); } }
/** * Удаление связи 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); }