【问题标题】:Magento addFieldToFilter: how to getCollection() from table using forigen keyMagento addFieldToFilter:如何使用外键从表中获取集合()
【发布时间】:2015-11-30 07:54:55
【问题描述】:

我是magento的新手,试图解决它,但没有成功。 我的问题是,如果“store_id”,我必须在基础上应用“addFieldToFilter”过滤器,我必须从表上的集合中删除特定商店/商店的所有订单

sales_flat_order

但 store_id 在表中

sales_flat_order_address

“sales_flat_order_address”表的主键“entity_id”被用作“sales_flat_order_address”中的外键作为“parent_id”,我写了一个类似这样的查询,

  $ordercollection = Mage::getModel('sales/order')->getCollection();
    $ordercollection->getSelect()->joinLeft(array('sfoa' => 'sales_flat_order_address'),'main_table.entity_id = sfoa.store_id',array('store_id'=>'sfoa.store_id'));
    $ordercollection->addFieldToFilter('store_id',array('neq'=>'555'));

我不明白,而且它不起作用

【问题讨论】:

  • 我的错,我不需要从数据库中删除它们,我不希望我的集合中特定商店的订单,即如果 store_id =33,则传递给所有订单的装配工for store_id=33 不应该在集合中:

标签: magento filter


【解决方案1】:

您可以使用它来按商店 ID 过滤您的订单

    $ordercollection = Mage::getModel('sales/order')->getCollection();
    $ordercollection->addFieldToFilter('store_id',array('neq'=>'4'));
    $ordercollection->getSelect()->joinLeft('sales_flat_order_address', "main_table.entity_id = sales_flat_order_address.parent_id",array('country_id'));

【讨论】:

  • 请等一下,这是在做什么 "array('country_id')"
  • country_id 是列名,如果您希望所有列删除 array('country_id) 作为 $ordercollection = Mage::getModel('sales/order')->getCollection( ); $ordercollection->addFieldToFilter('store_id',array('neq'=>'4')); $ordercollection->getSelect()->joinLeft('sales_flat_order_address', "main_table.entity_id = sales_flat_order_address.parent_id AND sales_flat_order_address.address_type='shipping'");
  • echo $ordercollection->getSelect()->__toString();exit;并在您的数据库上触发 sql 查询,将存储 id 从 4 更改为您的存储 id
  • 兄弟,它不起作用,正如我所说,你看过stackoverflow.com/questions/33996385/…
【解决方案2】:

【讨论】:

  • 我的错我不需要从数据库中删除它们,我不希望我的收藏中特定商店的订单,即如果 store_id =33,则传递给所有订单不应输入 store_id=33:
猜你喜欢
  • 1970-01-01
  • 2021-09-08
  • 1970-01-01
  • 1970-01-01
  • 2015-04-29
  • 1970-01-01
  • 2013-05-08
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多