我遇到了一个问题,我无法添加joinField()
到产品集合中。我不知道为什么它不起作用,因为它应该非常简单或至少会引发一些错误。不用说,这让我发疯了。我有兴趣查看产品和它们的总销售额。这是我从一本名为“Magento PHP 开发人员指南”和Magento Wiki的书中得到的。
public function getProducts($categoryId) {
$productCollection = Mage::getModel('catalog/category')->load($categoryId)
->getProductCollection()
->joinField('o', 'sales_flat_order_item', array('o.row_total', 'o.product_id'), 'main_table.entity_id = o.product_id');
}
// die; when uncommented, this function WILL NOT die here
return $productCollection;
}
我->joinField()
从书中得到了这个方法,但它没有抓住任何产品。奇怪的是,该函数甚至不返回任何内容,因为当die
取消注释该行时,该函数不会在那里终止。相反,前端将简单地跳过这个函数而不抛出任何错误(我现在可以看到),并且不会显示任何使用这个函数的块。我在这里想念什么?
当我joinField()
像下面这样删除它时它会起作用。
$productCollection = Mage::getModel('catalog/category')->load($categoryIds)
->getProductCollection();
更新:
进一步的测试表明,以下工作。请注意,如果我使用main_table
而不是e
,它不起作用。如果我查看由此生成的查询,main_table
则不会被主表替换;相反,查询包含文字字符串“main_table”。
$productCollection = Mage::getModel('catalog/category')->load($categoryIds)
->getSelect()
->join(array('o' => 'sales_flat_order_item'),
'e.entity_id = o.product_id',
'o.row_total'
);
虽然这不是。
$productCollection = Mage::getModel('catalog/category')->load($categoryIds)
->joinTable(
array('o' => 'sales_flat_order_item'),
'e.entity_id = o.product_id',
'o.row_total'
);
也许我没有看到一些简单的错误..但我只是看不出有什么问题。