我正在为Magento的管理员创建一个特定功能的自定义模块。在Adminhtml网格中,我提取了订单项,但还需要提取特定于每个产品的数据,因为它当前位于数据库中。
附件是我当前的Adminhtml网格的屏幕截图。 我需要将产品属性(品牌,味道等)添加为网格的附加列。我该怎么做呢?我尝试添加
$collection->join()
上的
_prepareCollection()
函数,但无法确定要连接的确切表(打开平面索引)。
谢谢! 标记
感谢您的提示。不是我正在寻找的东西,因为我正在处理带有选择菜单的EAV对象,但它很接近(upvoting)。
以下是我将最终添加的集合选择:
$collection->getSelect()->join('catalog_product_index_eav', '`catalog_product_index_eav`.`entity_id` = `main_table`.`product_id` AND `catalog_product_index_eav`.`attribute_id` = (SELECT attribute_id FROM eav_attribute WHERE attribute_code = "brand")', array('attribute_id'));
$collection->getSelect()->join('eav_attribute_option_value', '`eav_attribute_option_value`.`option_id` = `catalog_product_index_eav`.`value`', array('brand' => 'value'));
我真的不需要这个新品牌列的输入文本框中的search
功能,但有谁知道如何使这项工作?收到此错误:
SQLSTATE[42S22]: Column not found: 1054 Unknown column 'brand' in 'where clause'
我可以进去诊断,但想到有人可能会知道他们的头脑。
答案 0 :(得分:2)
您将不得不弄清楚要在联接中使用的表格。
$collection->getSelect()->join('sales_flat_order_item', '`sales_flat_order_item`.order_id=`main_table`.entity_id AND `sales_flat_order_item`.parent_item_id IS NULL ', null);
$collection->getSelect()->join('catalog_product_entity_varchar', '`catalog_product_entity_varchar`.attribute_id=144 AND `catalog_product_entity_varchar`.entity_id = `sales_flat_order_item`.`product_id`', array('models' => new Zend_Db_Expr('group_concat(`catalog_product_entity_varchar`.value SEPARATOR ",")')))