在管理产品网格中,我想加入另一个产品的字段。假设某些产品具有属性reference_id
。我希望添加的列显示产品的产品类型ID,其entity_id
是行的reference_id
。这就是我到目前为止所得到的:
$collection->addAttributeToSelect($referenceAttributeCode)
->getSelect()->join($collection->getTable('catalog/product'), 'e.entity_id=at_'.$referenceAttributeCode. '.value', array('type_id' => 'reference_product_type'));
这里的问题似乎是在操作select
对象时,立即发生更改,而使用addAttributeToSelect()
所做的更改在集合加载之前生效,结果查询如下所示:
SELECT `e`.*, `at_qty`.`qty`, `at_status`.`value` AS `status`, `at_visibility`.`value` AS `visibility`, `mgt_catalog_product_entity`.`type_id` AS `reference_product_type` FROM `mgt_catalog_product_entity` AS `e`
LEFT JOIN `mgt_cataloginventory_stock_item` AS `at_qty` ON (at_qty.`product_id`=e.entity_id) AND (at_qty.stock_id=1)
INNER JOIN `mgt_catalog_product_entity_int` AS `at_status` ON (`at_status`.`entity_id` = `e`.`entity_id`) AND (`at_status`.`attribute_id` = '96') AND (`at_status`.`store_id` = 0)
INNER JOIN `mgt_catalog_product_entity_int` AS `at_visibility` ON (`at_visibility`.`entity_id` = `e`.`entity_id`) AND (`at_visibility`.`attribute_id` = '102') AND (`at_visibility`.`store_id` = 0)
INNER JOIN `mgt_catalog_product_entity` ON e.entity_id=at_product_reference.value
当然,这里at_product_reference
不存在,因为该属性尚未加入。
我可能做错了。有什么建议吗?非常感激。谢谢!