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');

我认为这应该是正确的,并且可以解决任何用户错误,因为如果您将配置设置为管理库存,那么如果您不想管理库存,您应该只说使用配置设置,但用户可以将其设置为是而不检查那。

于 2010-09-23T04:43:17.827 回答