Ü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_Abstract
ve joinAttribute
kullanı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_Abstract
ve 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.