Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/magento/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 在安装脚本中更新产品属性值_Php_Magento_Installation_Magento 1.9 - Fatal编程技术网

Php 在安装脚本中更新产品属性值

Php 在安装脚本中更新产品属性值,php,magento,installation,magento-1.9,Php,Magento,Installation,Magento 1.9,我尝试更新升级脚本中所有商店中所有产品的属性值,如下所示: $installer = $this; $installer->startSetup(); $products = Mage::getModel("catalog/product")->getCollection()->addAttributeToSelect('*'); foreach($products as $product) { $product->setUpRoundingMode(0);

我尝试更新升级脚本中所有商店中所有产品的属性值,如下所示:

$installer = $this;
$installer->startSetup();


$products = Mage::getModel("catalog/product")->getCollection()->addAttributeToSelect('*');
foreach($products as $product) {
    $product->setUpRoundingMode(0);
    $product->setUpTargetValue(0);
    $product->save();
}


$installer->endSetup();
但我得到了这个错误:

Fatal error: Call to a member function getStoreIds() on a non-object in app\code\core\Mage\Catalog\Model\Resource\Abstract.php on line 257 致命错误:在第257行的app\code\core\Mage\Catalog\Model\Resource\Abstract.php中对非对象调用成员函数getStoreIds()
我用的是Magento 1.9。您知道如何正确执行此操作吗?

您没有在提供的代码中的任何地方调用该函数。我相信您的错误与安装脚本无关。有什么东西触发了函数getStoreIds(),有什么想法吗

我的解决方案是使用magento的数据升级api。可以在此处找到教程:

我遇到了同样的问题,将其追溯到属性
msrp\u enabled
,保存失败

但是我切换到只保存我实际上想在设置中更改的属性,而不是整个产品,我猜这是magento中的一个错误,或者你不应该在设置中保存整个产品

$product->getResource()->saveAttribute($product, 'my_updated_attribute');

我觉得这里的答案有点没用,所以这是我遇到这个问题后的两分钱

如果使用设置脚本使用Magento模型保存数据,则可能是做错了。您应该改用数据脚本。正如Vinai在中所解释的,区别在于:

数据设置脚本详细信息应该有自己的专用部分或帖子。 总之,它们的工作方式与模式设置脚本非常相似。简而言之,关键的区别在于它们

  • 位于数据/目录下
  • 在文件名之前有一个数据前缀
  • 在设置应用程序环境之后,即调度前端控制器之前执行。
因此,如果您使用的是安装脚本,例如:

app/code/local/You/Module/sql/your_setup_name/mysql4-upgrade-0.1.2-0.1.3.php app/code/local/You/Module/sql/your_setup_name/mysql4-upgrade-0.1.2-0.1.3.php 然后您应该将其移动到其他文件夹位置,例如:

app/code/local/You/Module/data/your_setup_name/data-upgrade-0.1.2-0.1.3.php app/code/local/You/Module/data/your_setup_name/data-upgrade-0.1.2-0.1.3.php 有用注释的快速摘要:

将安装脚本用于:
  • 在数据库中创建表
  • 使用Zend(或低级Magento)ORM将数据插入数据库(
    insert
    delete
    等)
  • 添加新属性
  • 修改现有属性
将数据脚本用于:
  • 使用Magento模型积垢数据