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)
เท่าที่ผมรู้ว่า approch _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 (ซึ่งฉันอ้างถึงว่าเป็น product_sku ใน_prepareColums()
วิธีการนี้ แต่join
ฉันต้องใส่อะไรที่นี่เพื่อรับชื่อ (และเช่นผู้ผลิต)
ฉันทำอะไรผิดเพราะใช้ไม่ได้joinLeft()
เหรอ
Mage_Core_Model_Resource_Db_Collection_Abstract
Call to undefined method Mycompany_Module_Model_Resource_Mymodel_Collection::joinLeft()
ฉันเดาว่าเป็นเพราะฉันไม่ได้ใช้ EAV Resource Model ใช่หรือไม่