我有一个图像 ID 数组,我正在对其进行迭代以将它们插入到数据库表“slider_images”中。下面是代码片段:
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')
表结构如下
我想插入这些值而不是更新。
感谢任何帮助。
最佳答案
在save
方法循环后调用$sliderImageModel->unsetData();
更新 更改如下代码:
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);
}
关于php - Magento 模型保存方法更新记录而不是插入,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32757496/