Ürün referanslı özel bir tablo var product_id. Şimdi arka uç ızgaramda ürün bilgilerini (sku, isim) göstermek istiyorum , ancak bunu yapmak için en iyi uygulamanın ne olduğundan emin değilim?
Benim en iyi tahminim SKUşöyledir:
$collection->join(
'catalog/product',
'product_id=`catalog/product`.entity_id',
array('product_sku' => 'sku')
)
( ızgara bloğu sınıfımdaki yöntemden kod _prepareCollection() )
Peki ürün adı ne olacak? Bu, catalog_product_entity_varchar içinde bulunabilir. Anladığım kadarıyla, kendi kaynak modeliniz ve koleksiyonunuz temel alındığında bunu kolayca elde edebilirsiniz, Mage_Eav_Model_Entity_Collection_Abstractçünkü o zaman gibi yöntemleri kullanabilirsiniz joinAttribute. Ancak modelim basit bir tabloya dayanıyor ve genişliyor Mage_Core_Model_Resource_Db_Collection_Abstractve joinAttributekullanılabilir bir yöntem yok .
Peki bu durumda ürün adını almanın en iyi yolu nedir?
Zaman ayırdığınız ve yardım ettiğiniz için teşekkürler :-)
Güncelleme: Daha kesin olmak gerekirse, kaynak modelim ve koleksiyonum hakkında konuşuyordum. Basit bir düz tabloyu, yalnızca birkaç özellikle eşleştirir.
entity_id product_id created_at user_id
Amacım bazı istatistikleri gösterdiğim arka uçta ızgara yapmaktır:
ProductSku Count(ProductSku) MAX(created_at)
Bildiğim kadarıyla, bunu yapmak için en iyi yaklaşım ızgara blok sınıfı üzerinden ve gitmek için yöntemdir _prepareCollection().
Benim yöntem şöyle görünür:
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();
}
Bu sku ( _prepareColums()yöntemde product_sku olarak adlandırdığım . join)
Kullanamadığım için yanlış bir şey mi yapıyorum joinLeft()?
Mage_Core_Model_Resource_Db_Collection_Abstractve bir hata alıyorumCall to undefined method Mycompany_Module_Model_Resource_Mymodel_Collection::joinLeft(). Sanırım bunun nedeni bir EAV Kaynak Modeli kullanmıyorum.