【问题标题】:Unable to save/update custom attributes无法保存/更新自定义属性
【发布时间】: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 中。您可能想解决手头的问题,而不是想方设法解决它。

标签: php magento


【解决方案1】:

如果使用产品模型保存自定义属性不起作用,另一种方法是使用产品操作资源模型更新属性,

$storeId = 1;
$productId = 1;

$attributesData = array(
    'name' => 'New Product Name',
    'price' => 50.00
);

$productAction = Mage::getModel('catalog/resource_product_action');
$productAction->updateAttributes(array($productId), $attributes, $storeId);

【讨论】:

    猜你喜欢
    • 2019-03-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-03-25
    • 1970-01-01
    • 1970-01-01
    • 2018-07-09
    相关资源
    最近更新 更多