通过Magento中的自定义属性查找客户

时间:2012-12-18 14:50:23

标签: magento

我有一个名为rms_id的自定义属性。这是一个与我们在另一个数据库中的客户相关联的唯一帐号。我需要一种方法来通过此ID查找客户,而无需手动访问数据库。

截至目前,我可以通过电子邮件地址加载客户:

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

这很棒,但电子邮件并不总是可用。 RMS id是。有没有办法通过自定义属性加载用户?

理论上,以下内容可行:

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

然而它出错了。任何帮助将不胜感激。

4 个答案:

答案 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对象。