3 回答
TA贡献1852条经验 获得超7个赞
我建议首先重构这个代码:
public function raport(Request $request)
{
//... some code
if(!$request->has('all')){
$date=date('Y-m-01');
if(!$request->filled('users')){
$query = Users::where('data', '>=', $date);
}else{
$query = Users::where('id_users', $request->input('users'))->where('data', '>=', $date);
}
}else{
if(!$request->filled('users')){
$query = Users::all();
}else{
$query = Users::where('id_users', $request->input('users'));
}
}
$raport=$query->orderBy('id_users', 'asc')->get();
//... another some code
}
它可能无法解决您的问题,但它更清楚。
笔记:
错误Illegal operator and value combination可能是由于空值和字段(例如日期时间)之间的比较
如果您想确定请求中是否存在某个值且不为空,您可以使用该filled方法
TA贡献1864条经验 获得超6个赞
你有这个价值
<input class="form-check-input" name="all" type="checkbox" value="1" id="all">
这意味着您发送值复选框 = 1
如果您没有设置该值,那么它的默认值是 = on
因此将整数与字符串进行比较导致您的错误
在您的情况下,laravel 在 request 中有方法,因此您可以检查表单中的复选框是否已选中
你可以像这样在你的代码中应用它
if(!$request->has('all') && empty($request->input('users')))
{
$raport = Users::where('data', '>=', $request->input('data'))
->orderBy('id_users', 'asc')->get();
}
elseif($request->has('all') && !empty($request->input('users')))
{
$raport = Users::where('id_users', $request->input('users'))
->orderBy('id_users', 'asc')->get();
}
elseif($request->has('all') && empty($request->input('users')))
{
$raport = Users::orderBy('id_users', 'asc')->get();
}
elseif(!$request->has('all') && !empty($request->input('users')))
{
$raport = Users::where('id_users', $request->input('users'))
->where('data', '>=', $request->input('data'))
->orderBy('id_users', 'asc')->get();
}
- 3 回答
- 0 关注
- 154 浏览
添加回答
举报