承接 koba/filter-builder-eloquent 相关项目开发

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

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

koba/filter-builder-eloquent

最新稳定版本:1.0.3

Composer 安装命令:

composer require koba/filter-builder-eloquent

包简介

Extension for the core filter builder library that allows applying filters on eloquent queries.

README 文档

README

Eloquent adapter for the filter-builder-core library.

Installation

composer require koba/filter-builder-eloquent

Usage

Creating an Eloquent Strategy

use App\Models\User;
use Koba\FilterBuilder\Core\Configuration\Configuration;
use Koba\FilterBuilder\Eloquent\EloquentStrategy;

$strategy = new EloquentStrategy(User::class);
$config = new Configuration($strategy);

Filtering Model Attributes

Use makeRule() to create filters for model attributes:

use Koba\FilterBuilder\Core\Enums\ConstraintType;
use Koba\FilterBuilder\Core\Enums\Operation;

$config->addRuleEntry(
    name: 'email',
    type: ConstraintType::STRING,
    supportedOperations: [Operation::EQUALS, Operation::STARTS_WITH],
    boundFilterFn: fn($strategy) => $strategy->makeRule(
        fn($query, $apply) => $apply('email', $query)
    )
);

Filtering Relationships

Use makeRelation() to filter based on related models:

use App\Models\Post;

// Create configuration for the related model
$postStrategy = new EloquentStrategy(Post::class);
$postConfig = new Configuration($postStrategy);

$postConfig->addRuleEntry(
    name: 'title',
    type: ConstraintType::STRING,
    supportedOperations: [Operation::STARTS_WITH],
    boundFilterFn: fn($strategy) => $strategy->makeRule(
        fn($query, $apply) => $apply('title', $query)
    )
);

// Add relationship filter
$config->addRelationEntry(
    name: 'posts',
    boundFilterFn: fn($strategy) => $strategy->makeRelation(
        Post::class,
        fn($query, $apply) => $query->whereHas('posts', $apply)
    ),
    configuration: $postConfig
);

Applying Filters

$filter = $config->getFilter($filterInput);

$query = User::query();
$filter->apply($query);

$users = $query->get();

Examples

Using whereDoesntHave

$config->addRelationEntry(
    name: 'posts',
    boundFilterFn: fn($strategy) => $strategy->makeRelation(
        Post::class,
        fn($query, $apply) => $query->whereDoesntHave('posts', $apply)
    ),
    configuration: $postConfig
);

Filtering on Relationship Attributes

$config->addRuleEntry(
    name: 'author_name',
    type: ConstraintType::STRING,
    supportedOperations: [Operation::EQUALS],
    boundFilterFn: fn($strategy) => $strategy->makeRule(
        fn($query, $apply) => $query->whereHas('author', fn($q) => $apply('name', $q))
    )
);

Documentation

For complete documentation on configuration, filter syntax, operations, and validation, see the core library.

License

MIT

统计信息

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

GitHub 信息

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

其他信息

  • 授权协议: MIT
  • 更新时间: 2026-02-23

承接程序开发

PHP开发

VUE

Vue开发

前端开发

小程序开发

公众号开发

系统定制

数据库设计

云部署

网站建设

安全加固