From 8c692e6181bcb4a6caa5c243c20fd97a276fd896 Mon Sep 17 00:00:00 2001 From: Michail Slabko <mslabko@ebay.com> Date: Wed, 21 Oct 2015 11:30:22 +0300 Subject: [PATCH] MAGETWO-44274: SQL error appears if Save & Duplicate product with images --- .../Catalog/Model/Product/Attribute/Backend/Media.php | 2 +- .../Model/ResourceModel/Product/Attribute/Backend/Media.php | 5 ++++- 2 files changed, 5 insertions(+), 2 deletions(-) diff --git a/app/code/Magento/Catalog/Model/Product/Attribute/Backend/Media.php b/app/code/Magento/Catalog/Model/Product/Attribute/Backend/Media.php index 8ca5ffbc429..f7fd135a134 100644 --- a/app/code/Magento/Catalog/Model/Product/Attribute/Backend/Media.php +++ b/app/code/Magento/Catalog/Model/Product/Attribute/Backend/Media.php @@ -85,7 +85,7 @@ class Media extends Product\Attribute\Backend\AbstractMedia // For duplicating we need copy original images. $duplicate = []; foreach ($value['images'] as &$image) { - if (empty($image['value_id'])) { + if (empty($image['value_id']) || !empty($image['removed'])) { continue; } $duplicate[$image['value_id']] = $this->copyImage($image['file']); diff --git a/app/code/Magento/Catalog/Model/ResourceModel/Product/Attribute/Backend/Media.php b/app/code/Magento/Catalog/Model/ResourceModel/Product/Attribute/Backend/Media.php index a77ea68ae16..0ac7a8c1a7b 100644 --- a/app/code/Magento/Catalog/Model/ResourceModel/Product/Attribute/Backend/Media.php +++ b/app/code/Magento/Catalog/Model/ResourceModel/Product/Attribute/Backend/Media.php @@ -324,11 +324,12 @@ class Media extends \Magento\Framework\Model\ResourceModel\Db\AbstractDb foreach ($this->getConnection()->fetchAll($select) as $row) { $data = [ 'attribute_id' => $attributeId, - 'entity_id' => $newProductId, 'value' => isset($newFiles[$row['value_id']]) ? $newFiles[$row['value_id']] : $row['value'], ]; $valueIdMap[$row['value_id']] = $this->insertGallery($data); + $this->bindValueToEntity($valueIdMap[$row['value_id']], $newProductId); + } if (count($valueIdMap) == 0) { @@ -344,6 +345,8 @@ class Media extends \Magento\Framework\Model\ResourceModel\Db\AbstractDb ); foreach ($this->getConnection()->fetchAll($select) as $row) { + unset($row['record_id']); + $row['entity_id'] = $newProductId; $row['value_id'] = $valueIdMap[$row['value_id']]; $this->insertGalleryValueInStore($row); } -- GitLab