제품 참조가있는 사용자 정의 테이블이 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 리소스 모델을 사용하지 않기 때문인 것 같습니다.