簡體   English   中英

Magento模型保存方法更新記錄而不是插入

[英]Magento model save method updating a record instead of inserting

我有一個圖像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')

和表架構如下

在此處輸入圖片說明

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

任何幫助表示贊賞。

調用$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);
}

放置在資源模型gallery/sliderImage

protected $_isPkAutoIncrement = false;

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM