পণ্য সংগ্রহের জন্য কাস্টম সাজানোর অর্ডার কীভাবে নির্দিষ্ট করবেন?


12

আমি পণ্যের আইডির অ্যারের উপর ভিত্তি করে একটি পণ্য সংগ্রহ তৈরি করার চেষ্টা করছি এবং আইডির অ্যারের উপর ভিত্তি করে সংগ্রহটিও সাজান।

$productIds = array(318,310,311);
$collection = Mage::getModel('catalog/product')
        ->getCollection()
        ->setOrder('entity_id', 'asc') // This will not do the job
        ->addAttributeToSelect('*')
        ->addAttributeToFilter('status', 1)
        ->addAttributeToFilter('entity_id', array(
    'in' => $productIds,
        ));

আমি যত তারা প্রদর্শিত সাজানোর সংগৃহীত করতে চান $productIdsঅ্যারের যে 318, 310, 311কিন্তু উপরের কোড সংগ্রহে ফিরে আসবে সাজানোর মত 310,311, 312

নীচের মত সরল মাইএসকিউএল কোয়েরি ব্যবহার না করেই কি এটি সম্ভব?

SELECT *
FROM catalog_product_entity
WHERE entity_id IN (318,
                    310,
                    311)
ORDER BY FIELD(entity_id, 318, 310, 311);

উত্তর:


18

দুর্ভাগ্যক্রমে Magento Varien_Data_Collection_Db _setOrderক্রিয়াকলাপে আদেশ বিকল্পগুলি বৈধতা দেবে । তবে আপনি সংগ্রহটি নির্বাচন করতে পারেন এবং নিজের পছন্দমতো অর্ডার তৈরি করতে একটি নতুন এক্সপ্রেশন যুক্ত করতে পারেন।

/* @var $collection Mage_Catalog_Model_Resource_Product_Collection */
$collection = Mage::getModel('catalog/product')
    ->getCollection()
    ->addAttributeToSelect('*')
    ->addAttributeToFilter('status', 1)
    ->addAttributeToFilter('entity_id', array(
            'in' => $productIds,
        ));

$collection->getSelect()->order(new Zend_Db_Expr('FIELD(e.entity_id, ' . implode(',', $productIds).')'));

foreach($collection as $product) {
    var_dump($product->getId());
}

এখানে আপনার দেখতে পাওয়া উচিত যে পণ্য আইডিগুলি অ্যারের ক্রমে রয়েছে।


এটি কাজ করে! ধন্যবাদ. আমরা কি উপরে এসকিউ অনুসারে বাছাই করতে পারি?
তাহির ইয়াসিন

সিনট্যাক্সের মাধ্যমে আপনি এই ক্রমে একাধিক ক্ষেত্র যুক্ত করতে পারেনFIELD(x, 1, 2, 3), FIELD(y, 3, 2, 1)
ডেভিড ম্যানার্স
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.