Magento - 根据RMA网格中的EAV(自定义)属性过滤客户

时间:2012-06-23 18:05:55

标签: magento

我正在使用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();

ATTEMPT 1

我尝试使用此表加入客户实体,如下所示:

$collection->getSelect()->join('customer_entity', 'customer_id = customer_entity.entity_id', array('entity_id' => 'customer_entity.entity_id'));

结果1

这只显示一个没有网格的页面。如果它有效,我会尝试加入customer_entity_varchar以在customer_referrer_id字段上应用过滤器。


ATTEMPT 2

我做的另一个尝试是首先加载客户集合,然后将RMA实体数据加入到它中,如下面的代码所示:

$collection = Mage::getResourceModel('customer/customer_collection');

$collection->joinRight('awrma/entity', 'customer_id=entity_id', array('*'));

结果2

第二次尝试会产生以下错误:

  

错误讯息-------------------------------->项目   (Mage_Customer_Model_Customer)具有相同的ID“XXX”已经存在“;

尽管事先在similar question for filtering results in the Sales Orders Grid

之后它以这种方式为我工作了

1 个答案:

答案 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);