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

Mat*_*att 1 php inventory magento

我建立了一个库存更新脚本-在这里,我在Magento中获取产品集合,并遍历结果集,并在进行时更新产品库存(基于单独的库存提要)。

我可以获取产品集合没有问题。

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

所以我尝试了:

// 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'
  ),
 ));
Run Code Online (Sandbox Code Playgroud)

但是,出现错误:

无效的属性名称:manage_stock。

dan*_*des 5

嗨,马特,您可能不得不使用类似这样的东西,而不是使用addFieldToFilter

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

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');
Run Code Online (Sandbox Code Playgroud)

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