Tôi có một bảng tùy chỉnh với một tài liệu tham khảo sản phẩm product_id
. Bây giờ tôi muốn hiển thị thông tin sản phẩm (sku, tên) trong lưới phụ trợ của mình , nhưng tôi không chắc cách thực hành tốt nhất để làm điều này là gì?
Dự đoán tốt nhất của tôi SKU
là như sau:
$collection->join(
'catalog/product',
'product_id=`catalog/product`.entity_id',
array('product_sku' => 'sku')
)
(mã từ _prepareCollection()
phương thức trong lớp khối lưới của tôi)
Nhưng còn tên sản phẩm thì sao? Nó có thể được tìm thấy trong catalog_product_entity_varchar. Sự hiểu biết của tôi là bạn có thể dễ dàng có được nó nếu mô hình và bộ sưu tập tài nguyên của riêng bạn dựa trên Mage_Eav_Model_Entity_Collection_Abstract
vì sau đó bạn có thể sử dụng các phương thức như thế nào joinAttribute
. Nhưng mô hình của tôi dựa trên một bảng đơn giản và mở rộng từ Mage_Core_Model_Resource_Db_Collection_Abstract
và không có joinAttribute
phương pháp nào khả dụng.
Vì vậy, cách tốt nhất để có được tên sản phẩm trong trường hợp này là gì?
Xin cám ơn về thời gian và sự giúp đỡ của bạn :-)
Cập nhật: Để chính xác hơn, tôi đã nói về mô hình và bộ sưu tập tài nguyên của tôi. Nó phù hợp với một bảng phẳng đơn giản chỉ với một vài thuộc tính như
entity_id product_id created_at user_id
Ý định của tôi là tạo lưới trong phần phụ trợ, nơi tôi hiển thị một số thống kê:
ProductSku Count(ProductSku) MAX(created_at)
Theo tôi biết, sự chấp thuận tốt nhất để làm điều này, là thông qua lớp khối lưới và phương pháp để đi là _prepareCollection()
.
Phương pháp của tôi trông như thế này:
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();
}
Điều này hoạt động tốt cho sku (mà tôi gọi là sản phẩm_sku trong _prepareColums()
phương thức. Nhưng join
tôi cần chèn gì ở đây để có được tên (và ví dụ: nhà sản xuất)?
Tôi có làm gì sai không vì tôi không thể sử dụng joinLeft()
?
Mage_Core_Model_Resource_Db_Collection_Abstract
và tôi gặp lỗiCall to undefined method Mycompany_Module_Model_Resource_Mymodel_Collection::joinLeft()
. Tôi đoán điều này là do tôi không sử dụng Mô hình tài nguyên EAV?