【发布时间】:2016-03-02 06:51:44
【问题描述】:
在尝试保存/更新产品时,遇到以下问题
SQLSTATE[23000]:违反完整性约束:1062 重复条目 键“UNQ_CATALOGINVENTORY_STOCK_ITEM_PRODUCT_ID_STOCK_ID”的“98763-1”
所以我尝试改变
$product->save();
到
$product->getResource()->save();
毫无疑问,它解决了问题。
但是现在它不保存自定义属性。我怎么能这样做?
保存产品的类:-
require_once 'Mage/Adminhtml/controllers/Catalog/ProductController.php';
class Fuze_Class_Adminhtml_Catalog_ProductController extends Mage_Adminhtml_Catalog_ProductController {
/**
* Save product action
*/
public function saveAction()
{
$storeId = $this->getRequest()->getParam('store');
$redirectBack = $this->getRequest()->getParam('back', false);
$productId = $this->getRequest()->getParam('id');
$isEdit = (int)($this->getRequest()->getParam('id') != null);
$data = $this->getRequest()->getPost();
if ($data) {
$this->_filterStockData($data['product']['stock_data']);
$product = $this->_initProductSave();
try {
// $product->save();
$product->getResource()->save();
$productId = $product->getId();
/**
* Do copying data to stores
*/
if (isset($data['copy_to_stores'])) {
foreach ($data['copy_to_stores'] as $storeTo=>$storeFrom) {
$newProduct = Mage::getModel('catalog/product')
->setStoreId($storeFrom)
->load($productId)
->setStoreId($storeTo)
->save();
}
}
Mage::getModel('catalogrule/rule')->applyAllRulesToProduct($productId);
$this->_getSession()->addSuccess($this->__('The product has been saved.'));
} catch (Mage_Core_Exception $e) {
$this->_getSession()->addError($e->getMessage())
->setProductData($data);
$redirectBack = true;
} catch (Exception $e) {
Mage::logException($e);
$this->_getSession()->addError($e->getMessage());
$redirectBack = true;
}
}
}
}
【问题讨论】:
-
保存产品自定义选项(如果这是您对自定义属性的意思?)发生在
Mage_Catalog_Model_Product的_beforeSave中。您可能想解决手头的问题,而不是想方设法解决它。