Saya memiliki tabel khusus dengan referensi produk product_id
. Sekarang saya ingin menunjukkan informasi produk (sku, nama) di grid backend saya , tetapi saya tidak yakin apa praktik terbaik untuk melakukan ini?
Tebakan terbaik saya SKU
adalah sebagai berikut:
$collection->join(
'catalog/product',
'product_id=`catalog/product`.entity_id',
array('product_sku' => 'sku')
)
(kode dari _prepareCollection()
metode di kelas blok kotak saya)
Tapi bagaimana dengan nama produk? Itu dapat ditemukan di catalog_product_entity_varchar. Pemahaman saya adalah bahwa Anda dapat dengan mudah mendapatkannya jika model sumber daya Anda sendiri dan koleksi didasarkan Mage_Eav_Model_Entity_Collection_Abstract
karena Anda dapat menggunakan metode seperti joinAttribute
. Tetapi model saya didasarkan pada tabel sederhana dan memanjang dari Mage_Core_Model_Resource_Db_Collection_Abstract
dan tidak ada joinAttribute
metode yang tersedia.
Jadi apa cara terbaik untuk mendapatkan nama produk dalam kasus ini?
Terima kasih atas waktu dan bantuan Anda :-)
Pembaruan: Untuk lebih tepatnya, saya berbicara tentang model dan koleksi sumber daya saya. Ini cocok dengan tabel datar sederhana dengan hanya beberapa atribut seperti
entity_id product_id created_at user_id
Niat saya adalah menyambungkan di backend tempat saya menampilkan beberapa statistik:
ProductSku Count(ProductSku) MAX(created_at)
Sejauh yang saya tahu, pendekatan terbaik untuk melakukan ini, adalah melalui kelas kotak blok dan metode untuk pergi adalah _prepareCollection()
.
Metode saya terlihat seperti ini:
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();
}
Ini berfungsi dengan baik untuk sku (yang saya sebut sebagai product_sku dalam _prepareColums()
metode. Tapi apa yang join
harus saya masukkan di sini untuk mendapatkan nama (dan misalnya produsen)?
Apakah saya melakukan sesuatu yang salah karena saya tidak dapat menggunakan joinLeft()
?
Mage_Core_Model_Resource_Db_Collection_Abstract
dan saya mendapatkan kesalahanCall to undefined method Mycompany_Module_Model_Resource_Mymodel_Collection::joinLeft()
. Saya kira ini karena saya tidak menggunakan Model Sumber Daya EAV?