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;
}