আমার কাছে পণ্য রেফারেন্স সহ একটি কাস্টম টেবিল রয়েছে product_id
। এখন আমি আমার ব্যাকএন্ড গ্রিডে পণ্যের তথ্য (স্কু, নাম) দেখাতে চাই , তবে আমি নিশ্চিত নই যে এটি করার সর্বোত্তম অনুশীলনটি কী?
আমার সেরা অনুমানটি SKU
নিম্নরূপ:
$collection->join(
'catalog/product',
'product_id=`catalog/product`.entity_id',
array('product_sku' => 'sku')
)
( আমার গ্রিড ব্লক শ্রেণীর পদ্ধতি থেকে কোড _prepareCollection()
)
তবে পণ্যের নাম কী? এটি ক্যাটালগ_প্রডাক্ট_এন্টিটি_ভরচারে পাওয়া যাবে। আমার বোধগম্যতা হল আপনার নিজের উত্সের মডেল এবং সংগ্রহের ভিত্তিতে যদি আপনি এটির Mage_Eav_Model_Entity_Collection_Abstract
মতো পদ্ধতি ব্যবহার করতে পারেন তবে আপনি এটি সহজেই পেতে পারেন joinAttribute
। তবে আমার মডেলটি একটি সাধারণ টেবিলের ভিত্তিতে এবং এর থেকে প্রসারিত Mage_Core_Model_Resource_Db_Collection_Abstract
এবং কোনও joinAttribute
পদ্ধতি উপলভ্য নয়।
এই ক্ষেত্রে পণ্যটির নাম পাওয়ার সর্বোত্তম উপায় কী?
আপনার সময় এবং সাহায্যের জন্য ধন্যবাদ :-)
আপডেট: আরও সুনির্দিষ্টভাবে বলতে গেলে, আমি আমার সংস্থান মডেল এবং সংগ্রহের কথা বলছিলাম। এটি কয়েকটি সাধারণ বৈশিষ্ট্যের মতো একটি সাধারণ ফ্ল্যাট টেবিলের সাথে মেলে
entity_id product_id created_at user_id
আমার উদ্দেশ্য ব্যাকেন্ডে গ্রিড করা যেখানে আমি কিছু পরিসংখ্যান দেখি:
ProductSku Count(ProductSku) MAX(created_at)
যতদূর আমি জানি, এটি করার সর্বোত্তম পন্থা গ্রিড ব্লক শ্রেণীর মাধ্যমে এবং যাওয়ার পদ্ধতিটি _prepareCollection()
।
আমার পদ্ধতিটি এমন দেখাচ্ছে:
protected function _prepareCollection()
{
// Get and set our collection for the grid
$collection = Mage::getResourceModel($this->_getCollectionClass());
$collection
->join(
'catalog/product',
'product_id=`catalog/product`.entity_id',
array('product_sku' => 'sku')
)
->addExpressionFieldToSelect('product_count', 'COUNT({{product_id}})', 'product_id')
->addExpressionFieldToSelect('newest', 'MAX({{created_at}})', array('created_at'=>'main_table.created_at'))
->getSelect()->group('product_id');
$this->setCollection($collection);
return parent::_prepareCollection();
}
এটি স্কুর পক্ষে (যা আমি _prepareColums()
পদ্ধতিতে product_sku হিসাবে উল্লেখ করি) ভাল কাজ করে But join
তবে নাম (এবং যেমন প্রস্তুতকারক) পেতে এখানে আমাকে কী প্রবেশ করানো দরকার?
আমি কিছু ভুল করছি কারণ আমি ব্যবহার করতে পারি না joinLeft()
?
Mage_Core_Model_Resource_Db_Collection_Abstract
এবং আমি একটি ত্রুটি পেয়েছিCall to undefined method Mycompany_Module_Model_Resource_Mymodel_Collection::joinLeft()
। আমার ধারণা এটির কারণ আমি কোনও EAV রিসোর্স মডেল ব্যবহার করি না?