vsavritsky/bitrix-filter-builder

此包最新版本(0.0.8)的许可证信息不可用。

用于简单创建过滤器的库

0.0.8 2024-07-19 15:06 UTC

This package is auto-updated.

Last update: 2024-09-23 19:38:22 UTC


README

此库提供以面向对象风格操作比特里克斯过滤器的功能

use BitrixFilterBuilder\Filter:

//Инициализация экземпляра класса
$filter = Filter::create(); // или $filter = new Filter;
// Фильтрация по ID c пустым свойством TEST и цена с диапазоне от 1 до 10
$filter->eq('ID', 2)->eq('ID', 2)->isNull('PROPERTY_TEST')->between('CATALOG_PRICE_1', 1, 100);

主要参数

eq($field, $value) - 值匹配

$filter->eq('ID', 2);

//аналогично фильтру битрикс
$filter = ['ID' => 2];

neq($field, $value) - 排除值

$filter->neq('ID', 2);

//аналогично фильтру битрикс
$filter = ['!ID' => 2];

like($field, $value) - 搜索子字符串

$filter->like('NAME', 'товар');

//аналогично фильтру битрикс
$filter = ['%NAME' => 'товар'];

notLike($field, $value) - 搜索不包含子字符串

$filter->notLike('NAME', 'товар');

//аналогично фильтру битрикс
$filter = ['!%NAME' => 'товар'];

isNull($field) - 搜索空值

$filter->isNull('PROPERTY_CODE');

//аналогично фильтру битрикс
$filter = ['PROPERTY_CODE' => false];

isNotNull($field) - 搜索非空值

$filter->isNotNull('PROPERTY_CODE');

//аналогично фильтру битрикс
$filter = ['!PROPERTY_CODE' => false];

in($field, $array) - 与数组中的值匹配

$filter->in('ID', [1, 2, 3, 4]); // как второй параметр принимает только массив
//можно так же использовать 
$filter->eq('ID', [1, 2, 3, 4]);

//аналогично фильтру битрикс
$filter = ['ID' => [1, 2, 3, 4]];

notIn($field, $array) - 排除数组中的值

$filter->notIn('ID', [1, 2, 3, 4]); // как второй параметр принимает только массив
//можно так же использовать 
$filter->neq('ID', [1, 2, 3, 4]);

//аналогично фильтру битрикс
$filter = ['!ID' => [1, 2, 3, 4]];

比较

between($field, $min, $max) - 值范围

$filter->between('ID', 1, 10);

//аналогично фильтру битрикс
$filter = [
    '>=ID' => 1,
    '<=ID' => 10,
];

gte($field, $value) - 大于或等于值

$filter->gte('ID', 10);

//аналогично фильтру битрикс
$filter = ['>=ID' => 10];

lte($field, $value) - 小于或等于值

$filter->lte('ID', 10);

//аналогично фильтру битрикс
$filter = ['<=ID' => 10];

gt($field, $value) - 大于值

$filter->gt('ID', 10);

//аналогично фильтру битрикс
$filter = ['>ID' => 10];

lt($field, $value) - 小于值

$filter->lt('ID', 10);

//аналогично фильтру битрикс
$filter = ['<ID' => 10];

获取过滤器数组(方法相同)

$arFilter = $filter->getResult();
$arFilter = $filter->toArray();
$arFilter = $filter->jsonSerialize();

复杂逻辑

addOrFilter(Filter $filter) - 添加“OR”逻辑

$subFilter->like('NAME', 'товар');
$subFilter->eq('CODE', 'tovar');
$filter->addOrFilter($subFilter);

//аналогично фильтру битрикс
$filter = [
    [
        'LOGIC' => 'OR',
        '%NAME' => 'товар',
        'CODE' => 'tovar'
    ]
];

addAndFilter(Filter $filter) - 添加“AND”逻辑

$subFilter->like('NAME', 'товар');
$subFilter->neq('NAME', 'товар');
$filter->addAndFilter($subFilter);

//аналогично фильтру битрикс
$filter = [
    [
        'LOGIC' => 'AND',
        '%NAME' => 'товар',
        '!NAME' => 'товар'
    ]
];

setFilterLogic($logic) - 设置过滤器逻辑(OR 或 AND)

$filter->setFilterLogic('OR');

//аналогично фильтру битрикс
$filter = [
    'LOGIC' => 'OR'
];

addSubFilter(Filter $filter) - 将过滤器作为参数添加

$filter->setFilterLogic('OR');

$subFulter->eq('ID', 5);
$filter->addSubFilter($subFulter);
$subFulter->eq('ID', 10);
$filter->addSubFilter($subFulter);

//аналогично фильтру битрикс
$filter = [
    'LOGIC' => 'OR'
    ['ID' => 5],
    ['ID' => 10],
];

mergeWithFilter(Filter $filter) - 合并过滤器

$subFilter->like('NAME', 'товар');
$filter->eq('NAME', 'товар');

$filter->mergeWithFilter($subFilter);
//аналогично фильтру битрикс
$filter = [
    'NAME' => 'товар'
    '%NAME' => 'товар',
];