Magento 2: একাধিক বিভাগ দ্বারা ফিল্টার পণ্য সংগ্রহ (Magento 2.1)


10

আমি ম্যাজেন্টো ২.১.০ ব্যবহার করছি এবং বর্তমানে একাধিক বিভাগের সাথে পণ্য সংগ্রহ ফিল্টার করতে আমার অসুবিধা হচ্ছে। আমি এটিকে কাজ করতে বেশ কয়েকটি উপায় ব্যবহার করেছি তবে তা হবে না।

ধরে নেওয়া যাক:

$catalog_ids = [618, 619, 620];
  1. NULL প্রদান করে

    $productCollection = $this->productCollectionFactory->create()
        ->addAttributeToSelect('*')
        ->addCategoriesFilter(array('in' => $catalog_ids));
  2. ব্যতিক্রম প্রত্যাবর্তন: অবৈধ বৈশিষ্ট্য নাম: বিভাগ_আইডি id

    $productCollection = $this->productCollectionFactory->create()
        ->addAttributeToSelect('*')
        ->addAttributeToFilter('category_id', array(
            'finset' => $catalog_ids
        ));
  3. রিটার্নস সিনট্যাক্স ত্রুটি বা এক্সেস লঙ্ঘন

    $productCollection = $this->productCollectionFactory->create()
        ->addAttributeToSelect('*')
        ->addAttributeToFilter('category_ids', array(
            'finset' => $catalog_ids
        ));

আমি কীভাবে এই কাজটি করতে সক্ষম হতে পারি বা এই কাজের সাথে কিছু যুক্ত করতে পারি সে সম্পর্কে কোনও পরামর্শ?


উত্পন্ন স্কয়ার চেক করার চেষ্টা করুন। $ productCollection-> getSelectSql (সত্য);
আরকাদেই চিঝভ

উত্তর:


14

আপনি সম্ভবত $this"ম্যাজেন্টো ১" থেকে "প্রতিটি পদ্ধতি ফেরত " দৃষ্টান্তের অভ্যস্ত হয়ে পড়েছেন anymore এটি আর হয় না (কমপক্ষে সর্বদা নয়)।

বিশেষত, addCategoriesFilter()কিছু ফেরত দেয় না এবং এজন্য আপনি পান null

কোডটি এতে পরিবর্তন করুন:

$productCollection = $this->productCollectionFactory->create();
$productCollection->addAttributeToSelect('*');
$productCollection->addCategoriesFilter(array('in' => $catalog_ids));

3
এটি আর না হওয়ার পরামর্শ দেওয়ার জন্য সম্ভবত খুব জোরালোভাবে বলা হয়েছে। একই ক্লাসে 'addCategoryFilter' (একবচন) ফাংশনটি ফিরে আসে $ এটি; সুতরাং 'অ্যাডক্যাটরিজস ফিল্টার'-এ রিটার্নের মান যুক্ত করা সম্ভবত সম্ভবত কোনও বিকাশকারীর দৃষ্টি এড়িয়ে গেছে।
প্যাট্রিক ভ্যান বার্জেন

হ্যাঁ, এটিও বোধগম্য হবে
ফ্যাবিয়ান শেমঙ্গলার

2

আপনার প্রথম চেষ্টাটি অবশ্যই এটি করার সঠিক উপায়:

$values = [318, 619, 620];
$conditionType = "in";
$productCollection->addCategoriesFilter([$conditionType => $values]);

এখন তা নিশ্চিত করার জন্য দুটি জিনিস রয়েছে: এটি কাজ করার জন্য $productCollectionঅবশ্যই একটি উদাহরণ হতে হবে Magento\Catalog\Model\ResourceModel\Product\Collection(বা এটি বর্ধিত কোনও শ্রেণীর কাছ থেকে)।

এবং স্পষ্টতই আপনার catalog_category_productটেবিলের এমন পণ্যগুলি থাকা দরকার যা সেই শর্তের সাথে মেলে, সম্ভবত এটি সে ক্ষেত্রে নয় এবং এজন্যই আপনি NULL পান।


কোন পণ্য সংগ্রহ বা পরিষেবা চুক্তি ব্যবহার করে ভাল উপায়? ম্যাজেন্টো \ ক্যাটালগ \ এপিআই \ ডেটা \
প্রোডাক্টস সার্চ রিসাল্টস ইন্টারফেস

@ ম্যাগপেইকো যদি আপনার পছন্দ থাকে সর্বদা পরিষেবার চুক্তিতে যান;)
রাফেল ডিজিটাল পিয়ানিজমে
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.