kblais / query-filter
轻松为您的Eloquent模型创建过滤器。
v3.2.0
2024-04-16 12:11 UTC
Requires
- php: ^8.0
- illuminate/database: ^9.33|^10.0|^11.0
- illuminate/http: ^9.33|^10.0|^11.0
- illuminate/support: ^9.33|^10.0|^11.0
- spatie/laravel-package-tools: ^1.1
Requires (Dev)
- friendsofphp/php-cs-fixer: ^3.0
- larastan/larastan: ^2.9
- orchestra/testbench: ^7.0|^8.0|^9.0
- dev-master
- v3.2.0
- v3.1.0
- v3.0.0
- v2.x-dev
- v2.0.2
- v2.0.1
- v2.0.0
- 1.7.0
- v1.6.1
- v1.6.0
- v1.5.0
- 1.4.0
- 1.3.0
- 1.2.0
- 1.1.0
- 1.0.0
- dev-allow-laravel-11
- dev-laravel-10-compat
- dev-laravel-9.0-upgrade
- dev-add-github-action
- dev-16-add-laravel-7-support
- dev-prepare-for-laravel-6
- dev-implement-arrayable-contract
- dev-update-readme
- dev-add-php-cs-fixer
- dev-update-travis
This package is auto-updated.
Last update: 2024-09-16 13:16:08 UTC
README
轻松为您的Eloquent模型创建过滤器。
安装
您可以通过composer安装此包
composer require kblais/query-filter
您可以使用以下命令发布配置文件
php artisan vendor:publish --provider="Kblais\QueryFilter\QueryFilterServiceProvider" --tag="query-filter-config"
这是发布配置文件的内容
return [ 'default-filters-source' => null, ];
用法
QueryFilter是一个类,可以根据数组或请求应用多个条件。
您可以直接从过滤器方法中调用任何Eloquent方法。
use Kblais\QueryFilter\QueryFilter; class PostFilter extends QueryFilter { public function title($value) { return $this->where('foo', 'bar'); } public function author($value) { return $this->whereHas('author', function ($builder) use ($value) { $this->where('name', $value); }); } }
为了允许模型使用查询过滤器,您必须在您的模型上添加Filterable
特性。
use Illuminate\Database\Eloquent\Model; use Illuminate\Database\Eloquent\Relations\BelongsTo; use Kblais\QueryFilter\Filterable; class Post extends Model { use Filterable; }
然后您可以从任何地方使用filter()
作用域
// From an array... $filterInput = [ 'title' => 'Les Trois Mousquetaires', ]; $posts = Post::filter(PostFilter::make($filterInput))->get(); // ...Or in a controller action public function index(PostFilter $filter) { // Filter is automatically populated with Request data when injected return Post::filter($filter)->get(); }
如果您的过滤器参数始终放置在数组键中(例如filters
),您可以在配置文件中定义default-filters-source
配置键,或在您的QueryFilter中添加protected string $source = 'filters'
。
常见问题
调用未定义的方法App\QueryFilters\YourFilter::anEloquentScope()。
与PHPStan
要修复此错误消息,请向您的过滤器添加以下DocBlock
/**
* @mixin \App\Models\ModelOfYourScope
*/
测试
测试套件由3个测试组成:PHPCsFixer(编码风格)、PHPStan(静态分析)和PHPUnit(单元测试)。
您可以通过运行以下命令来运行所有这些测试
composer tests
变更日志
请参阅CHANGELOG以获取有关最近更改的更多信息。
贡献
- 遵循PSR-2编码标准。使用PHP-CS-Fixer应用约定。
- 为您添加的功能和发现的错误添加测试。
致谢
许可证
MIT许可证(MIT)。有关更多信息,请参阅许可证文件。