質問

Mage::getModel呼び出しをしています。在庫がある特定のカテゴリにすべての製品を取得します。

$stockIds = Mage::getModel('cataloginventory/stock_item')
    ->getCollection()
    ->addQtyFilter('<=',1)
    ->addFieldToFilter('is_in_stock', 1)
    ->getAllIds();

$_productCollection=Mage::getModel('catalog/category')
    ->load(51)
    ->getProductCollection()
    ->addIdFilter($stockIds)
    ->addAttributeToSelect('*')
    ->setPageSize(10)->setCurPage(1);
.

すべてのものは->addFieldToFilter('is_in_stock', 1)ラインとは別に動作します。そのカテゴリ内のすべての製品が表示されていません。それを使って、それはいくつかの(明らかにランダムな)製品を除外していますが、それが「在庫があるか」であるかどうかに基づいていません。いくつかの在庫品目がまだ現れ、いくつかの在庫品は表示されません。

私はすべての製品が有効になっており、すべての量が10以上のことを確認しました。

在庫のある特定のカテゴリのすべての製品を取得するにはどうすればよいですか?

役に立ちましたか?

解決

最初に、$stockIdsproduct idsを返しません、それは株式ID、基本的に在庫表の主キーを与えます。 filter product collection by saleableを作成したい場合は、以下のコードを使用する必要があります。

Mage::getSingleton('cataloginventory/stock')->addInStockFilterToCollection($_productCollection)
.

ライセンス: CC-BY-SA帰属
所属していません magento.stackexchange
scroll top