Skip to content

Commit 92e490e

Browse files
committed
MAGETWO-83571: Could not save bundle option in multithreading mode
1 parent 79d8e9a commit 92e490e

File tree

1 file changed

+29
-14
lines changed
  • app/code/Magento/Bundle/Model/ResourceModel

1 file changed

+29
-14
lines changed

app/code/Magento/Bundle/Model/ResourceModel/Option.php

Lines changed: 29 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -88,24 +88,39 @@ protected function _afterSave(\Magento\Framework\Model\AbstractModel $object)
8888
];
8989

9090
$connection = $this->getConnection();
91-
$connection->delete($this->getTable('catalog_product_bundle_option_value'), $condition);
9291

93-
$data = new \Magento\Framework\DataObject();
94-
$data->setOptionId($object->getId())
95-
->setStoreId($object->getStoreId())
96-
->setParentProductId($object->getParentId())
97-
->setTitle($object->getTitle());
98-
99-
$connection->insert($this->getTable('catalog_product_bundle_option_value'), $data->getData());
92+
$select = $connection->select()->from($this->getTable('catalog_product_bundle_option_value'));
93+
foreach ($condition as $k => $v) {
94+
$select->where($k, $v);
95+
}
96+
$select->limit(1);
10097

101-
/**
102-
* also saving default value if this store view scope
103-
*/
98+
$rowSelect = $connection->fetchRow($select);
99+
if (is_array($rowSelect)) {
100+
$connection->update(
101+
$this->getTable('catalog_product_bundle_option_value'),
102+
[
103+
'title' => $object->getTitle()
104+
],
105+
$condition
106+
);
107+
} else {
108+
$data = new \Magento\Framework\DataObject();
109+
$data->setOptionId($object->getId())
110+
->setStoreId($object->getStoreId())
111+
->setParentProductId($object->getParentId())
112+
->setTitle($object->getTitle());
104113

105-
if ($object->getStoreId()) {
106-
$data->setStoreId(0);
107-
$data->setTitle($object->getDefaultTitle());
108114
$connection->insert($this->getTable('catalog_product_bundle_option_value'), $data->getData());
115+
116+
/**
117+
* also saving default value if this store view scope
118+
*/
119+
if ($object->getStoreId()) {
120+
$data->setStoreId(0);
121+
$data->setTitle($object->getDefaultTitle());
122+
$connection->insert($this->getTable('catalog_product_bundle_option_value'), $data->getData());
123+
}
109124
}
110125

111126
return $this;

0 commit comments

Comments
 (0)