【问题标题】:Set product attribute value in magento errors在 magento 错误中设置产品属性值
【发布时间】:2015-08-10 20:12:31
【问题描述】:

我正在编写一个创建新属性(有效)的导入器,现在我想为不同的产品设置不同的属性值,而不使用属性集。似乎对很多人都有效的方法如下:

Mage::getSingleton('catalog/product_action')
            ->updateAttributes([$id], ['color'=>'red'], self::STORE_ID);

对我来说很遗憾这个错误:

PHP Fatal error:  Uncaught exception 'PDOException' with message 'SQLSTATE[42S22]: Column not found: 1054 Unknown column 'attribute_id' in 'where clause'' in /vagrant/htdocs/lib/Zend/Db/Statement/Pdo.php:228
Stack trace:
#0 /vagrant/htdocs/lib/Zend/Db/Statement/Pdo.php(228): PDOStatement->execute(Array)
#1 /vagrant/htdocs/lib/Varien/Db/Statement/Pdo/Mysql.php(110): Zend_Db_Statement_Pdo->_execute(Array)
#2 /vagrant/htdocs/app/code/core/Zend/Db/Statement.php(291): Varien_Db_Statement_Pdo_Mysql->_execute(Array)
#3 /vagrant/htdocs/lib/Zend/Db/Adapter/Abstract.php(480): Zend_Db_Statement->execute(Array)
#4 /vagrant/htdocs/lib/Zend/Db/Adapter/Pdo/Abstract.php(238): Zend_Db_Adapter_Abstract->query('DELETE FROM `ca...', Array)
#5 /vagrant/htdocs/lib/Varien/Db/Adapter/Pdo/Mysql.php(428): Zend_Db_Adapter_Pdo_Abstract->query('DELETE FROM `ca...', Array)
#6 /vagrant/htdocs/lib/Zend/Db/Adapter/Abstract.php(664): Varien_Db_Adapter_Pdo_Mysql->query('DELETE FROM `ca...')
#7 /vagrant/htdocs/app/code/core/Mage/Catalog/Model/Resource/Abstract.p in /vagrant/htdocs/lib/Zend/Db/Statement/Pdo.php on line 235

有更好的方法还是我做错了什么?

【问题讨论】:

    标签: magento magento-1.9


    【解决方案1】:

    为了保存产品的属性值,你必须先加载产品对象然后设置属性值。见下面的例子:

    $id = 102; // Your product id    
    $product = Mage::getModel("catalog/product")->load($id);
            $product->setStatus(1);  
            $product->setColor("red");
            $product->save(); 
    

    【讨论】:

      【解决方案2】:

      据我所知,一种非常好的和高效的方法是使用资源模型:

      $product = Mage::getModel('catalog/product');
      $product->setId($productId);
      $product->setStoreId($storeId);
      $product->setColor('red');
      
      // or
      // $product->setDataUsingMethod('color', 'red')
      
      $resource = Mage::getResourceModel('catalog/product');
      $resource->saveAttribute($product, 'color');
      

      【讨论】:

      • 属性值在哪里?
      • 属性值是在 $product 中的 Model 类上设置的。您将 Model 类和属性代码交给 $resource->saveAttribute。
      • 对不起,我的意思是:我在哪里可以看到后端的产品价值? “管理产品”会话不显示产品属性
      • 哦,我不确定这是否有效。我从来没有尝试过没有属性集。我猜你的产品需要一个属性集来显示后端字段。问了一位同事,他也这么说。
      猜你喜欢
      • 1970-01-01
      • 2012-05-06
      • 2011-06-25
      • 2017-03-03
      • 2018-03-27
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多