在Magento中,您如何通过manage_stock字段过滤产品集合?

时间:2010-09-23 00:37:27

标签: php magento inventory

我已经构建了一个库存更新脚本 - 我在Magento中获取产品集合,并在我去的过程中迭代结果集,更新产品库存(基于单独的库存Feed)。

我可以获取产品系列没问题。

但是,我只想让拥有“管理库存”字段的产品(“库存”标签下的管理下拉菜单)设置为“是”。

所以我试过了:

// 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。

1 个答案:

答案 0 :(得分:5)

嘿Matt,你可能不得不使用像这样的东西

而不是使用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');

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