1

在庫更新スクリプトを作成しました。Magentoで商品コレクションを取得し、結果セットを反復処理して、(別の在庫フィードに基づいて)商品在庫を更新します。

商品コレクションは問題なく取得できます。

ただし、「在庫の管理」フィールド(「在庫」タブの下の管理者のドロップダウン)が「はい」に設定されている製品のみを取得したい。

だから私は試しました:

// get all magento catalog products with "manage stock" field set to yes
$items = Mage::getModel('catalog/product')->getCollection();
$items
 ->addAttributeToSelect(array(
  'id',
  'sku'
 ))
 ->addFieldToFilter(array(
  array(
   'attribute' => 'manage_stock',
   'eq' => '1'
  ),
 ));

しかし、エラーが発生します:

無効な属性名:manage_stock。

4

1 に答える 1

5

ちょっとマット、addFieldToFilterを使用する代わりに、おそらくこのようなものを使用する必要があります

$items->joinField('manages_stock','cataloginventory/stock_item','use_config_manage_stock','product_id=entity_id','{{table}}.use_config_manage_stock=1');

manage_stockは、製品の属性ではなく、実際の在庫アイテムの属性です。

アップデート:

これは、構成設定が在庫を管理するように設定されており、構成設定を使用せずに在庫を管理するように設定した人がいないことを前提としています。

これを追加しました

$items->joinField('manages_stock','cataloginventory/stock_item','use_config_manage_stock','product_id=entity_id','{{table}}.use_config_manage_stock=1 or {{table}}.manage_stock=1');

これは正しいはずであり、ユーザーエラーの原因となると思います。在庫を管理するように構成を設定している場合、在庫を管理したくない場合は、構成設定を使用すると言うだけですが、ユーザーはチェックせずにyesに設定できます。それ。

于 2010-09-23T04:43:17.827 に答える