2015-09-24 77 views
0

我有一个图像ID的数组,我正在迭代它将它们插入数据库表'slider_images'。下面是代码片段:Magento模型保存方法更新记录,而不是插入

 try { 
      $sliderImages= Mage::getModel('gallery/sliderImage')->getCollection() 
       ->addFieldToFilter('slider_id', array('eq' => $sliderId)); 

      $sliderImageIds = array_column($sliderImages->getData(), 'gallery_image_id'); 

      $addImageIds = array_diff($galleryImageIds,$sliderImageIds); 
      $deleteImageIds = array_diff($sliderImageIds, $galleryImageIds); 

      foreach ($addImageIds as $addImageId) { 
       $sliderImageData = array(); 
       $sliderImageModel = Mage::getModel('gallery/sliderImage'); 

       $sliderImageData['slider_id'] = $sliderId; 
       $sliderImageData['gallery_image_id'] = $addImageId; 

       $sliderImageModel->addData($sliderImageData)->save(); 
      } 

      foreach ($deleteImageIds as $deleteImageId) { 
       $deleteSliderImageModel = Mage::getModel('gallery/sliderImage'); 
       $deleteSliderImageModel->setGalleryImageId($deleteImageId)->delete(); 
      } 

      $this->_getSession()->addSuccess(
       $this->__('Total of %d record(s) were successfully updated', count($galleryImageIds)) 
      ); 
     }catch (Exception $e) { 
      $this->_getSession()->addError($e->getMessage()); 
     } 

这里$ addImageIds是像一组ID:

Array ([0] => 1 [2] => 2) 

问题:这是更新而不是插入一个新的记录。如果我查了查询日志

UPDATE `slider_images` SET `gallery_image_id` = '1' WHERE (slider_id='11') 

UPDATE `slider_images` SET `gallery_image_id` = '2' WHERE (slider_id='11') 

和表模式是像下面

enter image description here

我想插入,而不是更新这些值。

任何帮助表示赞赏。

回答

1

拨打电话$sliderImageModel->unsetData();save方法循环。

更新 变化代码象下面这样:

unset($sliderImages); 
foreach ($addImageIds as $addImageId) { 
    $sliderImageData = array(); 
    $sliderImageModel = Mage::getModel('gallery/sliderImage'); 

    $sliderImageData['slider_id'] = $sliderId; 
    $sliderImageData['gallery_image_id'] = $addImageId; 

    $sliderImageModel->addData($sliderImageData)->save(); 
    $sliderImageModel->unsetData(); 
    unset($sliderImageModel); 
} 
+0

感谢你所说的,但仍然是一个更新response.Did同样的事情。 –

+0

清除你的magento缓存 –

+0

是检查了将近2-3次。与上面的getCollection()方法有冲突吗? –

相关问题