В Magento, как вы фильтруете коллекцию товаров по полю manage_stock? - PullRequest
1 голос
/ 23 сентября 2010

Я создал скрипт обновления инвентаризации - где я получаю коллекцию продуктов в Magento и перебираю набор результатов, обновляя инвентарь продуктов (на основе отдельного канала инвентаризации) по ходу работы.

Iне может получить коллекцию товаров без проблем.

Однако я хочу, чтобы продукты, для которых поле «Управление запасами» (раскрывающееся в админке на вкладке «Инвентаризация») было установлено на «да».

Итак, я попытался:

// 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 Ответ

5 голосов
/ 23 сентября 2010

Привет, Мэтт, вместо использования 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');

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

...