代码拉取完成,页面将自动刷新
composer config repo.eloquent-filter vcs "https://gitee.com/yiming0/eloquent-filter.git"
composer require ymg/eloquent-filter
php artian vendor:publish --tag=eloquent-filter-config
namespace App\Models\Filters;
/**
* User Model Filter
*/
class UserFilter extends \Ymg\EloquentFilter\EloquentFilter
{
/**
* User.name 字段过滤方法
* @param $value
* @return void
*/
public function filterName($value)
{
$this->builder->where('name', $value);
}
}
config/eloquent-filter.php
默认已开启过滤器自动注册,可以修改配置文件:"auto_register" => false
。
使用效果:
Route::get('user', function(App\Models\User $user){
return $user->toSql();
});
GET /user?name=test
select * from users where "name" = "test";
// App\Models\User
use Ymg\EloquentFilter\FilterScope;
// ...
protected static function booted()
{
parent::booted();
static::addGlobalScope(app(FilterScope::class));
}
// ...
// App\Models\User
use App\Models\Filters\UserFilter;
use Illuminate\Database\Eloquent\Builder;
use Illuminate\Http\Request;
use Ymg\EloquentFilter\EloquentFilter;
// ...
public function scopeApplyFilter(Builder $builder, EloquentFilter $filter)
{
$filter->resolve($builder)
}
public function scopeFiltered(Builder $builder, Request $request)
{
UserFilter::make($request)->resolve($builder)
}
// App\Http\Controllers\UserController
//...
public function index(Request $request, User $user)
{
return $user->filtered($request)->get();
}
public function store(Request $request, User $user)
{
$request->merge(['name' => $request->input('username')]);
return $user->filtered($request)->get();
}
// App\Http\Controllers\UserController
//...
public function index(Request $request, User $user)
{
return $user->applyFilter(UserFilter::make($request))->get();
}
关于Scope,参考Laravel文档 #query-scopes
namespace App\Models\Filters;
use Ymg\EloquentFilter\EloquentFilter;
class StatusFilter extends EloquentFilter
{
public function filterStatus($value)
{
$this->builder->where('status', $value);
}
}
// App\Http\Controllers\UserController
use App\Models\Filters\StatusFilter;
//...
public function index(User $user, StatusFilter $filter)
{
return $user->applyFilter($filter)->get();
}
此处可能存在不合适展示的内容,页面不予展示。您可通过相关编辑功能自查并修改。
如您确认内容无涉及 不当用语 / 纯广告导流 / 暴力 / 低俗色情 / 侵权 / 盗版 / 虚假 / 无价值内容或违法国家有关法律法规的内容,可点击提交进行申诉,我们将尽快为您处理。