কারণ ColinM এর উত্তর কাজ করে কোড কারণে app/code/core/Mage/Catalog/Model/Resource/Product/Collection.php
এর addAttributeToFilter
পদ্ধতি। আপনি যদি এই অ্যারে বিন্যাসটি ব্যবহার করেন তবে এটি কল করবে না addAttributeToSelect
। ফ্ল্যাট মোডে, addAttributeToSelect
অ্যাট্রিবিউট ফ্ল্যাট টেবিলটিতে না থাকলে নিঃশব্দে ব্যর্থ হয়।
(নীচে আমার উত্তরটির পুনরায় হ্যাশ দেওয়া আছে /programming/6271284/can-i-add-other-attributes-to-magentos-flat- product-catolog-table/ 17021620 - আমি শিষ্টাচারটি এর জন্য কী তা নিশ্চিত নন তবে জানেন যে আমি এটি সহায়ক হয়েছি)
আমি ফ্ল্যাট-মোড সংগ্রহের জন্য ফ্ল্যাটবিহীন বৈশিষ্ট্যগুলি নির্বাচন এবং ফিল্টারিংয়ের জন্য একটি "পরিষ্কার" সমাধান চাইছিলাম, যা:
- অ্যাডমিনে নির্দিষ্ট সেটিংস রাখতে অ্যাট্রিবিউটটির প্রয়োজন হয় না (এটি কোনও ব্যবহারকারীর দ্বারা যুক্ত করা যেতে পারে, বা সামনের প্রান্তে লুকানো থাকে)
- উভয় ফ্ল্যাট এবং নন-ফ্ল্যাট মোডের জন্য কাজ করে
আমি সম্পর্কিত পণ্য সংগ্রহ ব্যবহার করেছি, তবে এটি কোনও EAV সংগ্রহে প্রযোজ্য।
ব্যর্থ কোড:
$_product = Mage::getModel('catalog/product')->loadByAttribute( 'sku', 'ABC123' );
$coll = $_product->getTypeInstance()->getAssociatedProductCollection()
->addAttributeToSelect( 'my_custom_attribute' )
->addAttributeToFilter( 'my_custom_attribute', 3 )
;
ফ্ল্যাট মোডে, উপরের কোডটি নিঃশব্দে নির্বাচন বা ফিল্টার টেবিলের মধ্যে না ঘটলে অ্যাট্রিবিউটে ফিল্টার করতে ব্যর্থ হয়।
নির্বাচন যোগ করা হচ্ছে:
$_product = Mage::getModel('catalog/product')->loadByAttribute( 'sku', 'ABC123' );
$coll = $_product->getTypeInstance()->getAssociatedProductCollection()
->joinAttribute( 'my_custom_attribute', 'catalog_product/my_custom_attribute', 'entity_id', null, 'left' )
->addAttributeToSelect( 'my_custom_attribute' )
;
joinAttribute
পদ্ধতি একটি নির্দিষ্ট বৈশিষ্ট্য অনুরোধ জন্য আপনার জিজ্ঞাসিত প্রশ্নের যোগদান যোগ করা হয়েছে। বৈশিষ্ট্যটি ইতিমধ্যে ফ্ল্যাট টেবিলটিতে থাকলে এটি এখনও কার্যকর হয় তবে ফ্ল্যাট টেবিলটি বিশুদ্ধভাবে ব্যবহার করার চেয়ে কিছুটা কম দক্ষ হবে।
আমি left
সেখানে একটি জয়েন ব্যবহার করেছি , এটি নিশ্চিত করতে যে এটি যদি my_custom_attribute
সেই পণ্যগুলিতে সেট না করা থাকে তবে তারা পণ্যগুলি নিয়ে আসে। inner
আপনি কেবল যেখানে সারি সারণিতে আগ্রহী সেটির জন্য এটি পরিবর্তন করুন my_custom_attribute
।
ফিল্টারে যুক্ত করা হচ্ছে (উপরের কলিনএম অনুসারে):
$_product = Mage::getModel('catalog/product')->loadByAttribute( 'sku', 'ABC123' );
$coll = $_product->getTypeInstance()->getAssociatedProductCollection()
->addAttributeToFilter( array( array( 'attribute' => 'my_custom_attribute', 'eq' => 3 ) ) )
;
উপরের কোডটি এটি আপনার ফিল্টারকে মেনে চলার পাশাপাশি নির্বাচনের সাথে যুক্ত করবে।
(সিই 1.6.2.0 এ পরীক্ষিত)
non-flat attribute
? ধন্যবাদ .আর ম্যাজেন্টোকে গুলিয়ে ফেলবেন না। এটি ইতিমধ্যে বিভ্রান্তিকর