我正在使用Magento 1.4.1.1和AW RMA extension。
安装此扩展程序后,我会在管理员中看到RMA请求网格和待处理RMA请求网格。
我希望能够根据EAV(自定义)属性过滤此网格中的请求,例如存储在 customer_entity_varchar
中的customer_referrer_id
该扩展程序有一个表 aw_rma_entity ,其中还包含 customer_id 。 RMA Grid获取如下数据:
$collection = Mage::getModel('awrma/entity')
->getCollection();
我尝试使用此表加入客户实体,如下所示:
$collection->getSelect()->join('customer_entity', 'customer_id = customer_entity.entity_id', array('entity_id' => 'customer_entity.entity_id'));
这只显示一个没有网格的页面。如果它有效,我会尝试加入customer_entity_varchar以在customer_referrer_id
字段上应用过滤器。
我做的另一个尝试是首先加载客户集合,然后将RMA实体数据加入到它中,如下面的代码所示:
$collection = Mage::getResourceModel('customer/customer_collection');
$collection->joinRight('awrma/entity', 'customer_id=entity_id', array('*'));
第二次尝试会产生以下错误:
错误讯息-------------------------------->项目 (Mage_Customer_Model_Customer)具有相同的ID“XXX”已经存在“;
尽管事先在similar question for filtering results in the Sales Orders Grid
之后它以这种方式为我工作了答案 0 :(得分:4)
这可能不是最佳解决方案,但最有可能奏效:
$collection = Mage::getModel('awrma/entity')->getCollection();
$collection->getSelect()->joinInner('customer_entity_varchar', 'customer_id=entity_id', array('attribute_id' =>'attribute_id','value'=>'value') );
$logged_in_admin = Mage::getSingleton('admin/session')->getUser()->getEmail();
$customer_referrer_attribute_id = //Set this equal to attribute_id FROM table eav_attribute WHERE attribute_code = "customer_referrer_id"
$collection->addFieldToFilter('attribute_id', $customer_referrer_attribute_id );
$collection->addFieldToFilter('value', $customer_referrer_id);