Я пытаюсь обновить значение атрибута для всех продуктов во всех магазинах в моем скрипте обновления следующим образом:
$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();
Но я получаю эту ошибку:
Неустранимая ошибка: вызов функции-члена getStoreIds () для необъекта в app \ code \ core \ Mage \ Catalogue \ Model \ Resource \ Abstract.php в строке 257
Я использую Magento 1.9. Есть идеи, как это сделать правильно?
Я нахожу здесь ответы немного бесполезными, так что вот мои два цента после столкновения с этой проблемой также.
Если вы используете настроить скрипт для сохранения данных с использованием модели Magento, вы, вероятно, делаете это неправильно. Вы должны использовать данные сценарий вместо. Как объясняет Винай в эта жемчужина статьи, разница в следующем:
Детали скрипта настройки данных заслуживают отдельного отдельного раздела или поста.
В целом они работают очень похоже на сценарии настройки схемы. Короче говоря, ключевые различия заключаются в том, что они …
- Находиться под каталогом data /
- Иметь префикс данных перед именем файла
- Выполняются после настройки среды приложения, непосредственно перед отправкой фронт-контроллера.
Поэтому, если вы используете скрипт установки, например:
Приложение / код / местные / Вы / модуль /SQL / your_setup_name / mysql4-обновить-0.1.2-0.1.3.php
Затем вы должны переместить его в другую папку, например:
Приложение / код / местные / Вы / модуль /Данные / your_setup_name / данных-обновить-0.1.2-0.1.3.php
Краткое резюме полезных заметок:
insert
, delete
так далее)Вы нигде не вызываете функцию в указанном вами коде. Я считаю, что ваша ошибка не связана с вашим скриптом установки. Что-то вызывает функцию getStoreIds () какие-либо мысли?
Мое решение состояло в том, чтобы использовать API обновления данных от magento. Учебник можно найти здесь:
http://inchoo.net/magento/magento-install-install-upgrade-data-and-data-upgrade-scripts/
У меня была такая же проблема, проследил это до атрибута msrp_enabled
сохранить его не удается
однако я переключился на сохранение атрибута, который я на самом деле хочу изменить в настройке, а не на весь продукт, я предполагаю, что это ошибка в magento, или вы не должны сохранять целые продукты в настройке
$product->getResource()->saveAttribute($product, 'my_updated_attribute');