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

Latest Stable Version Total Downloads Latest Unstable Version License

此简单包可以帮助您使用查询过滤器过滤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