電話番号で顧客を取得する方法は?
-
13-12-2019 - |
質問
特定の(携帯)電話番号に属する顧客オブジェクトを取得する必要があります。Magentoではどうすればいいですか?
そして電話番号がエンドユーザーによって入力され、さまざまな方法で書くことができる場合は、電話番号で顧客を取得できますか?
例えば:
- + 1 310-954-8012
- 1(310)954-8012
- 1-310-954-8012
- 13109548012
解決
電話番号が顧客の住所の一部であるため、カスタマーアドレスコレクションを介してこれを行うことができます。
$phoneNumber
で与えられた電話番号と顧客の住所内の1つが文字通り一致する場合は、単純にすることができます。
$customer = Mage::getResourceModel('customer/address_collection')
->addAttributeToSelect('telephone')
->addAttributeToFilter('telephone', $phoneNumber)
->getFirstItem()->getCustomer();
if ($customer !== false) {
// Do stuff...
}
.
その他の文字を除外する必要がある場合は、辺、入力、およびSQLの両方でこれを行う必要があります。
$charFilter = array('+', ' ', '(', ')', '-');
$phoneNumber = str_replace($charFilter, '', $phoneNumber);
// Build up SQL string replacements
$sqlFilter = 'at_telephone.value';
foreach ($charFilter as $_char) {
$sqlFilter = sprintf('REPLACE(%s, "%s", "")', $sqlFilter, $_char);
}
// Build collection
$collection = Mage::getResourceModel('customer/address_collection')
->addAttributeToSelect('telephone')
->addAttributeToFilter('telephone', array('notnull' => true));
$collection->getSelect()->where($sqlFilter . ' = ?', $phoneNumber);
// Get customer
$customer = $collection->getFirstItem()->getCustomer();
if ($customer !== false) {
// Do stuff...
}
. 所属していません magento.stackexchange