В Magento, как вы отфильтровали коллекцию продукта на поле Manage_Stock?

StackOverflow https://stackoverflow.com/questions/3774638

  •  04-10-2019
  •  | 
  •  

Вопрос

Я построил сценарий обновления инвентаризации - где я получу коллекцию продукта в 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.

Это было полезно?

Решение

Эй, Мэтт, вместо того, чтобы использовать AddFieldToFilter, вам, вероятно, придется использовать у Seamthing

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

Я думаю, что это должно быть правильным и учитывать любую ошибку пользователя, потому что если у вас есть настройки конфигурации, чтобы управлять запасом, то если вы не хотите управлять акциями, вы должны просто сказать, используйте настройки конфигурации, но пользователь может установить его на да, не проверяет это.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top