मेरे पास उत्पाद संदर्भ के साथ एक कस्टम टेबल है product_id
। अब मैं अपने बैकएंड ग्रिड में उत्पाद जानकारी (sku, name) दिखाना चाहूंगा , लेकिन मैं अनिश्चित हूं कि ऐसा करने के लिए सबसे अच्छा अभ्यास क्या है?
मेरा सबसे अच्छा अनुमान 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 के रूप में संदर्भित करता हूं । लेकिन join
नाम (और उदाहरण के लिए निर्माता) प्राप्त करने के लिए मुझे यहां क्या डालने की आवश्यकता है?
क्या मैं कुछ गलत कर रहा हूँ क्योंकि मैं उपयोग नहीं कर सकता हूँ joinLeft()
?
Mage_Core_Model_Resource_Db_Collection_Abstract
और मुझे एक त्रुटि मिलीCall to undefined method Mycompany_Module_Model_Resource_Mymodel_Collection::joinLeft()
। मुझे लगता है कि यह इसलिए है क्योंकि मैं एक ईएवी संसाधन मॉडल का उपयोग नहीं करता हूं?