一个我觉得超级好用的根据request 过滤数据的包
详见文档,欢迎 star
github.com/hooklife/larave-query-b...
使用 QueryBuilder
User::queryBuilder($request->all())->get()
编写 QueryBuilder
用户请求的参数 user_id 会默认映射到方法 UserId上,并且方法接受的参数 $value 为用户请求中user_id 的值
namespace App\QueryBuilders;
use Hooklife\QueryBuilder\QueryBuilder;
class UserQueryBuilder extends QueryBuilder
{
public function userId($value){
$this->query->where('user_id',$value)
}
}
其它插件
filterable
namespace App\QueryBuilders;
use Hooklife\QueryBuilder\Concerns\Filterable;
class UserQueryBuilder extends QueryBuilder
{
use Filterable;
public array $simpleFilters = [
'name' => ['like','%?%']
'status'
];
}
以上的例子相当于
namespace App\QueryBuilders;
class UserQueryBuilder extends QueryBuilder
{
public function name($value){
$this->query->where('name','like','%'.$value.'%');
}
public function status($value){
$this->query->where('status',$value);
}
}
sortable
namespace App\QueryBuilders;
use Hooklife\QueryBuilder\Concerns\Sortable;
class UserQueryBuilder extends QueryBuilder
{
use Sortable;
protected $sortPrefix = 'sort_'
public array $simpleSorts = [
'name',
'created_at' => 'desc'
];
}
以上的例子相当于
namespace App\QueryBuilders;
class UserQueryBuilder extends QueryBuilder
{
public function boot(){
$this->query->sortBy('created_at','desc');
}
public function sortName($value){
$this->query->orderBy('name',$value);
}
}
你这个跟modelFilter差不多呀
在相关model里配置过滤器
调用的时候这样调用