3

私はMagento1.4.1.1とその上にAWRMA拡張機能を使用しています。

この拡張機能をインストールすると、管理者にRMAリクエストグリッドと保留中のRMAリクエストグリッドが表示されます。

たとえば、 customer_entity_varcharcustomer_referrer_idに格納されているEAV(カスタム)属性に基づいて、このグリッド内のリクエストをフィルタリングできるようにしたい

拡張機能にはテーブルaw_rma_entityがあり、このテーブルにはcustomer_idも保持されます。RMAグリッドは次のようなデータをフェッチします。

$collection = Mage::getModel('awrma/entity')
                ->getCollection();

試行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フィールドにフィルターを適用しようとしました。


試行2

私が行ったもう1つの試みは、最初に顧客コレクションをロードしてから、次のコードのようにRMAエンティティデータをそれに結合することです。

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

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

結果2

2回目の試行では、次のエラーが生成されます。

エラーメッセージ-------------------------------->同じID「XXX」のアイテム(Mage_Customer_Model_Customer)はすでに存在します」;

これは、販売注文グリッドで結果をフィルタリングするための同様の質問の後で、このように以前に機能していたという事実にもかかわらずです。

4

1 に答える 1

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);
于 2012-06-25T10:38:33.760 に答える