Php 如何使用Laravel Eloquent过滤所有和特定字段?
我想在过滤所有字段和特定字段中的记录时重构源代码。 目前,我正在通过在请求中传递“搜索”来筛选所有字段:Php 如何使用Laravel Eloquent过滤所有和特定字段?,php,laravel,filter,eloquent,filtering,Php,Laravel,Filter,Eloquent,Filtering,我想在过滤所有字段和特定字段中的记录时重构源代码。 目前,我正在通过在请求中传递“搜索”来筛选所有字段: 获取请求:/api/users?搜索= public function index(Request $request) { $search = request("search") ?? ""; $users = $users->where(function ($query) use ($search) { $que
获取请求:
/api/users?搜索=
public function index(Request $request) {
$search = request("search") ?? "";
$users = $users->where(function ($query) use ($search) {
$query->where('code', "like", "%" . $search . "%");
$query->orWhere("first_name", "like", "%" . $search . "%");
$query->orWhere("last_name", "like", "%" . $search . "%");
$query->orWhereHas('department', function ($q) use ($search) {
$q->where('name', "like", "%" . $search . "%");
});
});
return $users->paginate(10);
}
我试着跟随,现在我的GET请求应该是:/api/users?first\u name=Juan&last\u name=Cruz
我应该像
/api/users那样传递all
请求吗?all=Juan
一次过滤所有字段吗?应用这种功能的最佳方法是什么
如果您知道任何可以作为我参考的活动/资源,这将是一个很大的帮助。如果您正在关注您共享的文章,您的url应该看起来像
/users?name=John&last\u name=Doe&code=123
然后,只需调用User::filter($filters)->get()
,它就会自动将查询字符串过滤器应用于查询
如果您不想实现过滤器功能,可以使用eloquentwhen
方法。它仅在给定条件为真时应用过滤器
公共功能索引(请求$Request){
$query=User::query();
$query=$query->when(请求('code')、函数($query){
$query->where('code','like','%')。请求('code')。%'))
})
->当(请求('first_name')、函数($query){
$query->where('first_name'、'like'、'%'。请求('first_name').');
})
->当(请求('last_name'),函数($query){
$query->where('last_name'、'like'、'%')。请求('last_name')。%');
})
->当(请求('department')、函数($query){
$query->where('last_name'、'like'、'%')。请求('last_name')。%');
})
->当(请求('department')、函数($query){
$query->whereHas('department',function($query){
$query->where('name'、'like'、'%')。请求('department')、'%');
});
});
返回$query->paginate(10);
}
如果您试图为数据表实现这一点,可以使用@Raja,但遗憾的是,我不是。我在前端使用vue.js和Vuetify