Маска
Описание
Значения фильтра этого типа обрабатываются по следующим правилам:
Операция | Значение | Описание |
---|---|---|
пустая строка | Фильтр по полю применяться не будет. Будут выбраны все значения. | |
"?" | не пустая строка | Значением фильтра должна быть строка которая может содержать сложную логику. |
"%", "!%" | не пустая строка | Будет выполнен регистронезависимый поиск подстроки. |
"><" или "!><" | должно быть массивом с двумя элементами | Будет выполнена проверка на попадание в диапазон заданный элементами массива значения фильтра. Включительно. Если перед полем этого указано отрицание (символ "!"), то будут выбраны значения не попадающие в диапазон. |
false | Если перед полем этого фильтра указано отрицание (символ "!"), то будут выбраны все не пустые значения.
Иначе будут выбраны пустые значения - NULL или те у которых длина равна нулю. | |
"=" | будет приведено к верхнему регистру | Проверка на точное совпадение значения. Если указано отрицание, то проверка будет выполнена на неравенство. Проверка регистронезависимая. |
">", "<", ">=", "<=" | будет приведено к верхнему регистру | "Больше", "меньше", "больше или равно" и "меньше или равно". Можно использовать "!" для отрицания условия. Не зависит от регистра. |
не указана | будет приведено к верхнему регистру | Значение фильтра будет служить маской для отбора значений. "%" - любое количество любых символов, "_" - один любой символ. |
Примечание: если значение фильтра массив, то для каждого элемента будут формироваться соответствующие условия, а затем они будут объединены по "ИЛИ". В случае отрицания условия будут объединяться по "И".
Смотрите также
Примеры использования
<? $arFilter = ( ... "NAME" => false, //Не вернет ничего т.к. нет пустых NAME "NAME" => "", //вернет все т.к. фильтр не будет применен "NAME" => "А%", //вернет все NAME начинающиеся на "A" "?NAME" => "(мама || мачеха) && (папа || отчим)", //Все имеют двух родителей ">NAME" => "э", //Все начинающиеся на Э, Ю, Я. ... ); ?>
// исключение из выборки всех записей, в названиях которых есть вхождения jpg, jpeg и png $arFilter = array( "IBLOCK_ID"=>$IBLOCK_ID, "ACTIVE_DATE"=>"Y", "ACTIVE"=>"Y", "!NAME" => array("%.jpg%", "%.jpeg%", "%.png%") );
//Есть очень большой каталог, несколько тысяч //нужно сделать выбор по двум словам (например, "Citroen" и "Berlingo"), которые могут содержаться в одном из пользовательских свойств элементов. //Как сделать через маску? //1-ый вариант маски: $arFilter['PROPERTY_a_use'] = "%Citroen%Berlingo%"; //2-ой вариант маски: $arFilter['?PROPERTY_a_use'] = "Citroen && Berlingo"; //Запрос $getListFirst = CIBlockElement::GetList($arOrder, $arFilter, false, false, $arSelect); //По производительности 2-ой вариант хуже, так как 1-ый вариант - это обычный LIKE запрос к БД, в то время как 2-ой вариант делает переработку фильтра запроса //С другой стороны, если в 1-ом варианте поменять местами слова, то ничего не найдется, а во 2-ом - должно сработать.
© «Битрикс», 2001-2024, «1С-Битрикс», 2024
Пользовательские комментарии
Мы будем рады, если разработчики добавят свои комментарии по практическому использованию методов системы.Для этого нужно всего лишь авторизоваться на сайте
Но помните, что Пользовательские комментарии, несмотря на модерацию, не являются официальной документацией. Ответственность за их использование несет сам пользователь.
Также Пользовательские комментарии не являются местом для обсуждения функционала. По подобным вопросам обращайтесь на форумы.