一个我觉得超级好用的根据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);
}
}
推荐文章: