বহুবিধ বৈশিষ্ট্যগুলিতে FIND_IN_SET সহ সংগ্রহ, তবে কারও কারও একটির মান রয়েছে


9

আমি একটি পণ্য সংগ্রহ তৈরি করছি, যা একটি বহুবিধ বৈশিষ্ট্য থেকে ফলাফল খুঁজে পাবে।

(প্রাসঙ্গিক কোড যা সংগ্রহে ফিনসেট যুক্ত করে - বাস্তব আইডি মানগুলি প্রদর্শনের জন্য সামঞ্জস্য করা হয়)

$attribute = Mage::getModel('eav/config')->getAttribute('catalog_product', 'measurement');
    $value = array('finset' => array('237',
                '236',
                '235',
                '234',
                '233',));
    $collection->addAttributeToFilter($attribute, $value);

ফলাফলযুক্ত স্ক্যুএল (দৃশ্যমান ফিল্টার যুক্ত) এরকম:

SELECT DISTINCT
    e . *,
    at_measurement.value AS measurement,
    at_visibility.value AS visibility
FROM
    catalog_product_entity AS e
        INNER JOIN
    catalog_product_entity_varchar AS at_measurement ON (at_measurement.entity_id = e.entity_id) AND (at_measurement.attribute_id = '983') AND (at_measurement.store_id = 0)
        INNER JOIN
    catalog_product_entity_int AS at_visibility ON (at_visibility.entity_id = e.entity_id) AND (at_visibility.attribute_id = '526') AND (at_visibility.store_id = 0)
WHERE
    (e.attribute_set_id IN ('74')) AND (FIND_IN_SET('237',
            '236',
            '235',
            '234',
            '233',
            at_measurement.value)) AND (at_visibility.value IN ('2' , '4'))
GROUP BY e.entity_id

সমস্যাটি হ'ল আমি স্কেল ত্রুটি পেয়েছি:

"SQLSTATE[42000]: Syntax error or access violation: 1582 Incorrect parameter count in the call to native function 'FIND_IN_SET'"

এবং আমি (মনে করি) আমি দেখতে পাচ্ছি কেন: বহুবিধ মানগুলির কয়েকটিতে একটি মাত্র বিকল্প রয়েছে, সুতরাং ফিনসেটের জন্য যোগ্যতা অর্জনের জন্য কোনও কমা বিভাজিত মান নেই thus

আমি এই ত্রুটি কেন উত্পাদিত হয় তা সঠিক? আমি কীভাবে এই সংগ্রহকে এই অ্যাকাউন্টে অ্যাকাউন্ট লিখতে পারি?

উপরের না হলে আমি কী মিস করছি?

মাইএসকিএল ওয়ার্কবেঞ্চে স্ক্যুয়াল চালানো থেকে প্রাপ্ত ফলাফল, বিয়োগফল_সামান্য ধারাটি বিয়োগ:

ফলাফল ক্যোয়ারী সম্পাদক এ পরীক্ষিত


উত্তর:


26

অ্যাডট্রিবিউটটোফিল্টার বা শর্তের সাথে ব্যবহার করার চেষ্টা করুন

$collection->addAttributeToFilter($attribute,
    array(
        array('finset'=> array('237')),
        array('finset'=> array('238')),
        array('finset'=> array('239')),
    )
);

অথবা

$collection->addAttributeToFilter(
    array(
        array('attribute'=> 'attributecode','finset' => array('237')),
        array('attribute'=> 'attributecode','finset' => array('237')),
        array('attribute'=> 'attributecode','finset' => array('237')),
    )
);

1
কীভাবে আমরা FIND_IN_SET করতে পারি না?
স্লিমশাদ্দেদী

'ও' শর্তটি কীভাবে ব্যবহার করবেন
দিবাণ বাবু

1
জন্য "এবং" শুধু প্রতিটি মান জন্য $ collection-> addAttributeToFilter () পুনরাবৃত্তি
Wouter
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.