@alexanderks7

Как выполнить фильтрацию CUser::GetList сразу по нескольким индексам?

В поле ввода указывается строка - ФИО, Email или логин. Как получить список пользователей, у которых искомое выражение встречается хотя бы в одном индексе?
Если указываю
$filter = Array (
    "LOGIN" => 'ключевые | слова',
    "NAME" => 'ключевые | слова',
    "EMAIL" => 'ключевые | слова'
);

то поучаю пустой результат. Видимо, идет запрос LOGIN & NAME & EMAIL. Как сделать фильтр "если есть хотя бы в одном"?
  • Вопрос задан
  • 955 просмотров
Пригласить эксперта
Ответы на вопрос 2
$filter = Array (
"LOGIC"=>"OR",
   array( "LOGIN" => 'ключевые | слова'),
   array( "NAME" => 'ключевые | слова'),
   array( "EMAIL" => 'ключевые | слова')
);

Так не работает?
Ответ написан
yakutec
@yakutec
Футбол, бокс, велосипед
К сожалению, только через query

$connection = Bitrix\Main\Application::getConnection();
	$sqlHelper = $connection->getSqlHelper();

	$sql = "SELECT * FROM b_user WHERE
			LOGIN = '".$sqlHelper->forSql($keyw)."'
			OR EMAIL = '".$sqlHelper->forSql($keyw)."' 
			OR NAME = '".$sqlHelper->forSql($keyw)."' 
	";
	
	$recordset = $connection->query($sql);
	if ($record = $recordset->fetch())
	{


Подробно про работу с query вы можете узнать из курса.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы