4

rms_idというカスタム属性があります。これは、別のデータベースでお客様に関連付けられている一意のアカウント番号です。データベースに手動でアクセスすることなく、このIDで顧客を検索する方法が必要です。

今のところ、次のようにメールアドレスで顧客を読み込むことができます。

$customer->loadByEmail($data['email']);

これは素晴らしいことですが、電子メールが常に利用できるとは限りません。RMSIDはです。カスタム属性でユーザーをロードする方法はありますか?

理論的には、次のように機能します。

$customer->loadByRmsId($data['account_id']);

ただし、エラーが発生します。どんな助けでも大歓迎です。

4

4 に答える 4

18

コアにこれの良い例があります。Mage_Catalog_Model_Abstract::loadByAttribute()[リンク]を参照してください。これには、データ モデルを使用したコレクションの取得、属性の結合、およびその属性によるフィルター処理が含まれます。これは、属性が静的でない場合、つまりエンティティ テーブルの一部でない場合に必要です。

$result = Mage::getModel('customer/customer')
              ->getCollection()
              ->addAttributeToSelect('rms_‌​id')
              ->addAttributeToFilter('rms_id',{Val})->load();

if (is_object($result)) {
    /* Logic */
}
于 2012-12-18T15:19:35.143 に答える
1

loadByEmail()しかし実際には、次のような独自の方法を考え出す必要がありますapp/code/core/Mage/Customer/Model/Resource/Customer.php

またはコレクションから電子メールを受け取る

Mage::getModel('customer/customer')->getCollection()->addFieldToFilter('rms_id', 'youremailhere')->load();
于 2012-12-18T15:25:44.880 に答える
0

次のようにすることもできます。

$customer = Mage::getModel('customer/customer') ->getCollection() ->addAttributeToSelect('*') ->addAttributeToFilter('rms_id', $data['account_id']) ->getFirstItem(); オブジェクトを返しMage_Customer_Model_Customerます。

于 2016-02-19T14:14:04.643 に答える
0
$customer->load($data['account_id'], 'rms_id');
于 2012-12-18T15:20:30.640 に答える