nahidulhasan / eloquent-filter
Laravel eloquent查询过滤器
1.0.2
2019-08-31 16:40 UTC
This package is auto-updated.
Last update: 2024-09-08 22:55:39 UTC
README
此简单包可以帮助您使用查询过滤器过滤Eloquent数据。
安装
运行以下命令
$ composer require nahidulhasan/eloquent-filter
入门
在您的eloquent模型中使用特质NahidulHasan\EloquentFilter\Filterable
。
创建一个新的类,通过扩展类NahidulHasan\EloquentFilter\QueryFilters
,并以具有一个参数的方法定义您自定义的过滤器。函数名是过滤器参数名,参数是值。
假设您想要允许过滤文章数据。请看以下代码。
<?php namespace App\Models; use Illuminate\Database\Eloquent\Model; use NahidulHasan\EloquentFilter\Filterable; class Article extends Model { use Filterable; /* * The attributes that are mass assignable. * @var array */ protected $fillable = ['title', 'body']; }
创建扩展QueryFilters的ArticleFilter类。
<?php namespace App\Filters; use Illuminate\Database\Eloquent\Builder; use NahidulHasan\EloquentFilter\QueryFilters; class ArticleFilters extends QueryFilters { /* * Filter by Title. * @param $title * @return Builder * @internal param $name * @internal param string $level */ public function title($title) { return $this->builder->where('title', 'like', '%' .$title.'%'); } }
使用此类,我们可以使用http查询字符串:title=article_name
或这些过滤器的任意组合。您是否使用AND where或OR取决于您。
现在,在控制器中,您可以像下面描述的那样应用这些过滤器
<?php namespace App\Http\Controllers; use App\Filters\ArticleFilters; use App\Models\Article; use Illuminate\Http\Request; /** * Class ArticleController * @package App\Http\Controllers */ class ArticleController extends Controller { /* * Display a listing of the resource. * @param ArticleFilters $filters * @return \Illuminate\Http\Response * @internal param Request $request */ public function index(ArticleFilters $filters) { $articles = Article::filter($filters)->paginate(5); return view('articles.index', compact('articles'))->with('i', (request()->input('page', 1) - 1) * 5); } }
如果您访问此链接,您将获得所有代码:https://github.com/nahidulhasan/laravel-eloquent-query-filtering
感谢
https://github.com/laracasts/Dedicated-Query-String-Filtering
许可证
Eloquent-Filter for Laravel是开源软件,使用MIT许可证MIT license