Example #1
0
 /**
  * @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);
         }
     }
 }