Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/268.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 如何使用Laravel Eloquent过滤所有和特定字段?_Php_Laravel_Filter_Eloquent_Filtering - Fatal编程技术网

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()
,它就会自动将查询字符串过滤器应用于查询

如果您不想实现过滤器功能,可以使用eloquent
when
方法。它仅在给定条件为真时应用过滤器

公共功能索引(请求$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