php - Magento - 如何在 EE 1.9 中使用 JoinTable 函数

标签 php mysql magento

magento 升级到 1.9.1 EE 后出现问题。在自定义脚本中,我们过去常常通过这种方式与另一个表进行连接,并且它始终运行良好。

$collection->joinTable('sales_flat_order_item','order_id=entity_id', array('sku', 'qty_ordered', 'qty_invoiced', 'udropship_vendor') , 'sales_flat_order_item.udropship_vendor="'.$this->vendorid.'"', 'right');
$collection->groupByAttribute(array('entity_id')); 

但升级后我们收到错误消息: fatal error :调用未定义的方法 Mage_Sales_Model_Mysql4_Order_Collection::joinTable()。

有人知道怎么办吗?

最佳答案

Order Collection 现在由一个平面表表示。因此,您可以通过此集合的标准 Varien_Db_Select 属性添加过滤器:

$select = $collection->getSelect();
$select->join(
        array('o_item' => 'sales_flat_order_item'),
        'o_item.order_id = main_table.entity_id AND o_item.udropship_vendor = "' . $this->vendorid . '"',
        array('sku', 'qty_ordered', 'qty_invoiced', 'udropship_vendor')
    )
    ->group('main_table.entity_id');

就是这个问题的答案。

但是,另外我应该指出代码片段中的一些问题,您在问题中给出了:

  1. 最好覆盖这个 为您的商店收集和 将此逻辑放入新创建的 public 集合模型的方法。它比操纵集合的字段更好 直接。
  2. 连接标识符“right”是 不允许加入 EAV 收集表。在内部,作为未知标识符,它被映射 到“内部加入”。这个很 与可能的预期不同 '右外连接'。你应该 重写逻辑?还是“内部加入” 按预期行事?
  3. 'sku', 'qty_ordered', “qty_invoiced”字段不明确。 他们并不像现在这样可靠 取自未知的订单项目(或 甚至来自不同的项目),那是 通过“udropship”加入订单 条件。
  4. 有可能,你应该引用 '$this->vendorid',如果它是一个字符串。 或者将它转换为 int,如果它是整数。 仅将供应商 ID 连接到 字符串并用双 引述。

关于php - Magento - 如何在 EE 1.9 中使用 JoinTable 函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6519439/

相关文章:

php - Wordpress 仅在主页中缩小 html

php - 在管理页面中启用模板路径提示 - Magento

MySQL 无法添加外键约束 错误代码 : 1215

php - Magento - 如何在结帐过程中向订单添加发票费用

javascript - magento 中的嵌套类别下拉列表

php - Laravel 5.4 - 'updateOrCreate' 方法。检查记录是否为 'updated' 或 'created'

php - 从保存的行返回值

php - 适用于 Linux 的轻量级 IDE

php - SQL(左连接)(照片,类别)

mysql - GROUP_CONCAT 按整数排序,而不是字符串