Magento 1.7:无法将joinField合并到产品集合中
我遇到一个问题,无法向产品集合添加Magento 1.7:无法将joinField合并到产品集合中,magento,magento-1.7,Magento,Magento 1.7,我遇到一个问题,无法向产品集合添加joinField()。。我不知道为什么它不工作,因为它应该非常简单,或者至少会抛出一些错误。不用说,它快把我逼疯了。我感兴趣的是看产品和它们的总销售额。这是我从《MagentoPHP开发人员指南》和 我从书中直接获得了->joinField()方法,但它没有抓住任何产品。奇怪的是,函数甚至不返回任何内容,因为当die行未注释时,函数不会在那里终止。相反,前端只需跳过此函数而不抛出任何错误(我现在可以看到),并且不显示使用此函数的任何块。我错过了什么 当我删除j
joinField()
。。我不知道为什么它不工作,因为它应该非常简单,或者至少会抛出一些错误。不用说,它快把我逼疯了。我感兴趣的是看产品和它们的总销售额。这是我从《MagentoPHP开发人员指南》和
我从书中直接获得了->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)
->joinTable(
array('o' => 'sales_flat_order_item'),
'e.entity_id = o.product_id',
'o.row_total'
);
也许我没看到什么简单的错误。。但我就是不知道怎么了
public function getProducts($categoryId) {
$productCollection = Mage::getModel('catalog/category')->load($categoryId)
->getProductCollection()
->joinTable( // JoinTable makes more sense.
array('o' => 'sales/order_item'),
'main_table.entity_id = o.product_id'
array('row_total'),
)
;
return $productCollection;
}
它可能会返回
catalog\u product\u entity
表中的所有字段以及sales\u order\u item
表中的row\u total
。您可以在连接之前使用addAttributeToSelect('o.product_id')
,只是为了清除不需要的字段。您有一个语法错误:}
应该在返回之后代码>表别名不应该被替换-所以没关系。我忘记了当您直接使用资源模型连接表时,主表可能会被别名为e。不过,同样的问题仍然存在。一旦添加了->joinTable()
,该函数将不起作用。它不会抛出任何错误,Magento会以某种方式跳过它,并在前端呈现页面的其余部分。即使我将die
放在return
后面的代码中,它也不会在那里结束。我甚至不能用printlogquery
打印查询。我注意到第二个arg后面缺少逗号。所以这不是语法问题。我设法让join()
工作,而不是joinTable()
。我更新了我的帖子。你能看一下有什么问题吗?Return结束执行。一个die
函数在它之后不会做任何事情。
$productCollection = Mage::getModel('catalog/category')->load($categoryIds)
->joinTable(
array('o' => 'sales_flat_order_item'),
'e.entity_id = o.product_id',
'o.row_total'
);
public function getProducts($categoryId) {
$productCollection = Mage::getModel('catalog/category')->load($categoryId)
->getProductCollection()
->joinTable( // JoinTable makes more sense.
array('o' => 'sales/order_item'),
'main_table.entity_id = o.product_id'
array('row_total'),
)
;
return $productCollection;
}