我正在使用雄辩的查询来过滤数据。我的查询就是这样,它现在可以正常工作了。
$users = User::where('username','LIKE','%'.request('username').'%')
->where('first_name','LIKE','%'.request('first_name').'%')
->where('last_name','LIKE','%'.request('last_name').'%')
->where('gender','LIKE','%'.request('gender').'%')
->where('password','LIKE','%'.request('password').'%')
->SimplePaginate(15);
我的请求数据是这样的。
但是,我需要针对动态字段更新此查询。可以有不同的字段。我所做的是在关联数组中发送请求。因此,我的请求数据变成了这样
我打算做的是将所有请求数据放入搜索数组中。然后使用循环像上面的查询一样运行。我该怎么办?
P.S。我在论坛上签到,发现了一些类似的问题。其中一些已经过时了。其他人没有解决我的问题。
答案 0 :(得分:2)
如果我了解您的权利,您可以这样做:
GET unsafe:data:application/octet-stream;base64,Zm9vMQ== net::ERR_UNKNOWN_URL_SCHEME
答案 1 :(得分:0)
where()
子句也可以接受数组。考虑到这一点,您可以映射搜索参数并将其转换为所需的格式,然后将其输入查询中。
例如:
$search = [
'first_name' => 'John',
'last_name' => 'Smith'
];
$filters = collect($search)->map(function($value, $key) {
return [$key, 'LIKE', "%{$value}%"];
})->values()->toArray();
return User::where($filters)->SimplePaginate(15);
答案 2 :(得分:0)
您可以尝试一下。
$search = $request->get('search');
User::where(function ($q) use ($search){
foreach ($search as $key=>$value) {
if($value != null ){
$q->where($key, 'like', "%{$value}%");
}
}
})->get();