oooiik / laravel-query-filter
在Laravel中,将模型相关的查询过滤器写在一个单独的类中非常方便
1.1.3
2022-11-09 11:59 UTC
Requires
- php: ^7.3|^8.0
README
在Laravel中,将模型相关的查询过滤器写在一个单独的类中非常方便!
安装
composer require oooiik/laravel-query-filter
使用
单次使用
User::filter($validated)->get();
或创建一个过滤器
$userFilter = User::createFilter(UserFilter::class);
使用过滤器获取查询
$userFilter->apply($validated)->query();
在过滤器上编写过滤器并获取查询
$userFilter->apply($validated); $userFilter->apply($validated_2)->query();
过滤器清理和重用
$userFilter->resetApply($validated_3)->query();
为了使用过滤器,您必须通过包提供的命令创建一个新的过滤器
php artisan make:filter UserFilter
此命令将在内部创建一个名为 Filters
的目录和一个名为 UserFilter
的类。要使用 User
模型的过滤器方法,请使用 Filterable
特性
<?php namespace App\Models; use Oooiik\LaravelQueryFilter\Traits\Model\Filterable; class User extends Model { use Filterable;
并通过添加以下内容设置模型的 defaultFilter
protected $defaultFilter = UserFilter::class;
您可以通过在 Filter
类中创建新的函数来创建自定义查询,例如按出版日期过滤书籍
public function username($username) { $this->builder->where('username', $username); } // $validated = ['username' => 'name']
或按关系过滤
public function role($role) { $this->builder->whereHas('role', function($query) use ($role) { $query->where('title', $role); }) } // $validated = ['role' => 'admin']