承接 bentools/meilisearch-filters 相关项目开发

从需求分析到上线部署,全程专人跟进,保证项目质量与交付效率

邮箱:yvsm@zunyunkeji.com | QQ:316430983 | 微信:yvsm316

bentools/meilisearch-filters

最新稳定版本:1.1.1

Composer 安装命令:

composer require bentools/meilisearch-filters

包简介

Expression builder for Meilisearch filters.

README 文档

README

Latest Stable Version License CI Workflow Coverage Total Downloads

MeiliSearch Filter Builder

This library allows you to build Meilisearch filters using PHP.

This is a port of the JS library.

Examples:

Comparison Filters

use function Bentools\MeilisearchFilters\field;

echo field('cat')->equals("Berlioz"); // cat = 'Berlioz'
echo field('cat')->notEquals("O'Malley"); // cat != 'O\\'Malley'
echo field('age')->isGreaterThan(5); // age > '5'
echo field('age')->isGreaterThan(5, true); // age >= '5'
echo field('age')->isNotGreaterThan(5); // age <= '5'
echo field('age')->isNotGreaterThan(5, true); // age < '5'
echo field('age')->isLowerThan(10); // age < '10'
echo field('age')->isLowerThan(10, true); // age <= '10'
echo field('age')->isNotLowerThan(10); // age >= '10'
echo field('age')->isNotLowerThan(10, true); // age > '10'

Between Filter

use function Bentools\MeilisearchFilters\field;

echo field('age')->isBetween(5, 10); // age '5' TO '10'
echo field('age')->isNotBetween(5, 10); // NOT age '5' TO '10'
echo field('age')->isBetween(5, 10, false); // age > '5' AND age < '10'
echo field('age')->isNotBetween(5, 10, false); // NOT (age > '5' AND age < '10')

Exists Filter

use function Bentools\MeilisearchFilters\field;

echo field('god')->exists(); // god EXISTS
echo field('god')->doesNotExist(); // god NOT EXISTS

Empty Filter

use function Bentools\MeilisearchFilters\field;

echo field('glass')->isEmpty(); // glass IS EMPTY
echo field('glass')->isNotEmpty(); // glass IS NOT EMPTY

Null Filter

use function Bentools\MeilisearchFilters\field;

echo field('nullish')->isNull(); // nullish IS NULL
echo field('nullish')->isNotNull(); // nullish IS NOT NULL

IN Filter

use function Bentools\MeilisearchFilters\field;

$cat = field('cat')
echo $cat->isIn(['Berlioz', "O'Malley"]); // cat IN ['Berlioz', 'O\\'Malley']
echo $cat->isNotIn(['Berlioz', "O'Malley"]); // cat NOT IN ['Berlioz', 'O\\'Malley']

CONTAINS filter

use function Bentools\MeilisearchFilters\field;

$cat = field('cat')
echo $cat->contains('Berlioz'); // cat CONTAINS 'Berlioz'
echo $cat->doesNotContain('Berlioz'); // cat NOT CONTAINS 'Berlioz'

STARTS WITH filter

use function Bentools\MeilisearchFilters\field;

$cat = field('cat')
echo $cat->startWith('Ber'); // cat STARTS WITH 'Ber'
echo $cat->doesNotStartWith('Ber'); // cat NOT STARTS WITH 'Ber'

Geographic filters

use function Bentools\MeilisearchFilters\{withinGeoRadius, notWithinGeoRadius};

echo withinGeoRadius(50.35, 3.51, 3000); // _geoRadius(50.35, 3.51, 3000)
echo notWithinGeoRadius(50.35, 3.51, 3000); // NOT _geoRadius(50.35, 3.51, 3000)
use function Bentools\MeilisearchFilters\{withinGeoBoundingBox, notWithinGeoBoundingBox};

echo withinGeoBoundingBox([50.55, 3], [50.52, 3.08]); // _geoBoundingBox([50.55, 3], [50.52, 3.08])
echo notWithinGeoBoundingBox([50.55, 3], [50.52, 3.08]); // NOT _geoBoundingBox([50.55, 3], [50.52, 3.08])

Composite filters

use function Bentools\MeilisearchFilters\field;

$cat = field('cat')
$color = field('color')
$age = field('age')
echo $cat->equals("Berlioz")->and($age->between(5, 10)); // cat = 'Berlioz' AND age '5' TO '10'
echo $cat->equals("Berlioz")->or($age->between(5, 10)); // cat = 'Berlioz' OR age '5' TO '10'

// Automatic grouping
echo $color->equals('ginger')->or($cat->equals("Berlioz")->and($age->between(5, 10))); // color = 'ginger' OR (cat = 'Berlioz' AND age '5' TO '10')

NOT filter

use function Bentools\MeilisearchFilters\{field, not};

$color = field('ginger')
echo not($color->equals('ginger')); // NOT color = 'ginger' 

Adding parentheses

use function Bentools\MeilisearchFilters\{field, group};

$color = field('ginger')
echo group($color->equals('ginger')); // (color = 'ginger') 

Installation

composer req bentools/meilisearch-filters

Tests

composer ci:check

License

MIT.

统计信息

  • 总下载量: 762
  • 月度下载量: 0
  • 日度下载量: 0
  • 收藏数: 2
  • 点击次数: 0
  • 依赖项目数: 1
  • 推荐数: 0

GitHub 信息

  • Stars: 2
  • Watchers: 1
  • Forks: 0
  • 开发语言: PHP

其他信息

  • 授权协议: MIT
  • 更新时间: 2023-12-05