我有一个名为rms_id的自定义属性。这是一个与我们在另一个数据库中的客户相关联的唯一帐号。我需要一种方法来通过此ID查找客户,而无需手动访问数据库。
截至目前,我可以通过电子邮件地址加载客户:
$customer->loadByEmail($data['email']);
这很棒,但电子邮件并不总是可用。 RMS id是。有没有办法通过自定义属性加载用户?
理论上,以下内容可行:
$customer->loadByRmsId($data['account_id']);
然而它出错了。任何帮助将不胜感激。
答案 0 :(得分:17)
核心有一个很好的例子;见Mage_Catalog_Model_Abstract::loadByAttribute()
[link]。它涉及使用数据模型检索集合,将属性加入,以及按该属性过滤。如果属性不是静态的,即不是实体表的一部分,则这是必要的。
$result = Mage::getModel('customer/customer')
->getCollection()
->addAttributeToSelect('rms_id')
->addAttributeToFilter('rms_id',{Val})->load();
if (is_object($result)) {
/* Logic */
}
答案 1 :(得分:1)
但实际上你必须在loadByEmail()
app/code/core/Mage/Customer/Model/Resource/Customer.php
的方法。
或从收藏中收到电子邮件
Mage::getModel('customer/customer')->getCollection()->addFieldToFilter('rms_id', 'youremailhere')->load();
答案 2 :(得分:0)
$customer->load($data['account_id'], 'rms_id');
答案 3 :(得分:0)
您也可以这样做:
$customer = Mage::getModel('customer/customer')
->getCollection()
->addAttributeToSelect('*')
->addAttributeToFilter('rms_id', $data['account_id'])
->getFirstItem();
将返回Mage_Customer_Model_Customer
对象。