سؤال

أنا جعل 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.

كيف يمكنني الحصول على جميع المنتجات في فئة معينة التي هي في الأوراق المالية?

هل كانت مفيدة؟

المحلول

أولا,$stockIds لا تعود product ids ، فإنه يعطي معرف الأسهم ، أساسا جدول الأسهم المفتاح الأساسي.إذا كنت تريد filter product collection by saleable ثم تحتاج إلى استخدام التعليمات البرمجية أدناه:

Mage::getSingleton('cataloginventory/stock')->addInStockFilterToCollection($_productCollection)
مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى magento.stackexchange
scroll top