我遇到了问题,我无法将joinField()
添加到产品集合中..我不知道为什么它不起作用,因为它应该非常简单或至少抛出一些错误。毋庸置疑,这让我疯狂。我有兴趣查看产品和他们销售的总金额。这是我从一本名为“Magento PHP开发人员指南”和Magento Wiki的书中得到的。Magento 1.7:无法在产品集合中包含joinField
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();
UPDATE:
进一步的测试表明,以下几项工作。请注意,如果我使用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'
);
也许我没有看到一些简单的错误..但我只是没有看到什么是错的。
你有一个语法错误:'}'应该在'return ...;'之后# –
表别名不应该被替换 - 所以没关系。当我直接使用资源模型连接表时,我忘记了主表可能被别名为e。 –