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')
和表模式是像下面
我想插入,而不是更新这些值。
任何帮助表示赞赏。
感谢你所说的,但仍然是一个更新response.Did同样的事情。 –
清除你的magento缓存 –
是检查了将近2-3次。与上面的getCollection()方法有冲突吗? –