/** * @param \Magento\Framework\Model\AbstractModel $object * @return $this */ protected function _afterSave(\Magento\Framework\Model\AbstractModel $object) { if (isset($object['bannerIds'])) { $oldBanners = $this->resourceBanner->lookupBannerIds($object->getId()); $newBanners = (array) $object->getItemsId(); $table = $this->getTable('magebase_carousel_join'); $insert = array_diff($newBanners, $oldBanners); $delete = array_diff($oldBanners, $newBanners); if ($delete) { $where = ['slider_id = ?' => (int) $object->getId(), 'banner_id IN (?)' => $delete]; $this->getConnection()->delete($table, $where); } if ($insert) { $data = []; foreach ($insert as $bannerId) { $data[] = ['slider_id' => (int) $object->getId(), 'banner_id' => (int) $bannerId]; } $this->getConnection()->insertMultiple($table, $data); } return parent::_afterSave($object); } if (isset($object['stores'])) { $oldStores = $this->lookupStoreIds($object->getId()); $newStores = (array) $object->getStores(); if (empty($newStores)) { $newStores = (array) $object->getStoreId(); } $table = $this->getTable('slider_store_join'); $storeInsert = array_diff($newStores, $oldStores); $storeDelete = array_diff($oldStores, $newStores); if ($storeDelete) { $where = ['slider_id = ?' => (int) $object->getId(), 'store_id IN (?)' => $storeDelete]; $this->getConnection()->delete($table, $where); } if ($storeInsert) { $data = []; foreach ($storeInsert as $storeId) { $data[] = ['slider_id' => (int) $object->getId(), 'store_id' => (int) $storeId]; } $this->getConnection()->insertMultiple($table, $data); } } }