Как в Bitrix выполнить поиск пользователей по точному совпадению номера телефона?

Почему метод `CUser::getList` возвращает пользователя с номером телефона, содержащим неполное совпадение, и как исправить это поведение?
  • 16 мая 2024 г. 18:40
Ответы на вопрос 2
1. Для выполнения поиска пользователей по точному совпадению номера телефона в Bitrix можно воспользоваться следующим кодом:

```php
$phoneNumber = "+71234567890"; // номер телефона для поиска

$filter = array(
    "PERSONAL_PHONE" => $phoneNumber
);

$userList = CUser::GetList(($by="ID"), ($order="ASC"), $filter);
while ($userData = $userList->Fetch()) {
    // обработка найденных пользователей
}
```

2. Метод `CUser::getList` может возвращать пользователя с номером телефона, содержащим неполное совпадение, потому что используется поиск по частичному совпадению поля `PERSONAL_PHONE` в базе данных. Если нужно искать только по точному совпадению, необходимо изменить фильтр запроса, добавив символы начала и конца строки:

```php
$phoneNumber = "+71234567890"; // номер телефона для поиска

$filter = array(
    "=PERSONAL_PHONE" => $phoneNumber // использование символа "=" для точного совпадения
);

$userList = CUser::GetList(($by="ID"), ($order="ASC"), $filter);
while ($userData = $userList->Fetch()) {
    // обработка найденных пользователей
}
```

Таким образом, добавив символ "=" к полю `PERSONAL_PHONE` в фильтре запроса, можно выполнить поиск пользователей по точному совпадению номера телефона в Bitrix.
CUser::getList($_ = [], $_ = [], ['=PERSONAL_PHONE' => '89164453774']);
Похожие вопросы