我有一个带有产品参考的自定义表product_id
。现在,我想在后端网格中显示产品信息(SKU,名称),但是我不确定这样做的最佳实践是什么?
我的最佳猜测SKU
如下:
$collection->join(
'catalog/product',
'product_id=`catalog/product`.entity_id',
array('product_sku' => 'sku')
)
(来自 我的网格块类中方法的代码_prepareCollection()
)
但是产品名称呢?可以在catalog_product_entity_varchar中找到。我的理解是,如果您自己的资源模型和集合是基于的,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();
}
这对于sku效果很好(我在_prepareColums()
方法中将其称为product_sku 。但是join
,为了获得名称(例如制造商),我需要在此处插入什么?
我因为无法使用而做错了joinLeft()
什么?
Mage_Core_Model_Resource_Db_Collection_Abstract
并且出现错误Call to undefined method Mycompany_Module_Model_Resource_Mymodel_Collection::joinLeft()
。我猜这是因为我不使用EAV资源模型吗?