php - Magento 模型保存方法更新记录而不是插入

标签 php mysql magento magento-1.9

我有一个图像 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')

表结构如下

enter image description here

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

感谢任何帮助。

最佳答案

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/

相关文章:

php - 如何在mysql中检查数据类型图像?

php - 比较本地和 ftp 文件

php - SimpleXMLElement、xpath 和子元素

php - 如何在 Laravel 5.5 中正确编写 Controller 方法的单元测试?

php - 推进类重建后 "Base Query"内的多个函数声明

mysql - 如何在 WHERE 中使用多个子查询

php - 根据类型计算一个月中每一天的行之间的差异

php - Magento 购物车弹出窗口

javascript - Magento 1.7 使用 PayPal 下订单时出错 "OrderReviewController is not defined"

php - magento 显示子类别