我正在尝试创建一个文本字段过滤器,该过滤器的值可以从表的所有列中查询所有具有过滤器值的数据。现在我现有的代码只能从users.name
下面的列中查询,这是我当前的代码:
$employeeDetails = DB::table('employees')
->join('users', 'users.id', '=', 'employees.user_id')
->leftjoin('cost_centres', 'cost_centres.id', '=', 'employees.cost_centre_id')
->leftjoin('departments', 'departments.id', '=', 'employees.department_id')
->leftjoin('sections', 'sections.id', '=', 'employees.section_id')
->leftjoin('employee_positions', 'employee_positions.id', '=', 'employees.position_id')
->leftjoin('teams', 'teams.id', '=', 'employees.team_id')
->leftjoin('categories', 'categories.id', '=', 'employees.category_id')
->leftjoin('branches', 'branches.id', '=', 'employees.branch_id')
->leftjoin('areas', 'areas.id', '=', 'employees.area_id')
->leftjoin('employee_grades', 'employee_grades.id', '=', 'employees.grade_id')
->leftjoin('attendance_group_area','attendance_group_area.area_id','employees.area_id')
->whereIn('employees.id', $leaveTransactionEmployees)
->where('users.name', 'LIKE', '%'.$filterValue.'%')
->select('employees.*','users.name as name', 'cost_centres.name as costCentre', 'departments.name as department', 'sections.name as section',
'employee_positions.name as position', 'teams.name as team', 'areas.name as area', 'employee_grades.name as grade',
'categories.name as category', 'attendance_group_area.attendance_group_id as attendance_group_id')
->get();
return response()->json($employeeDetails);
如您所见,我现在拥有的唯一过滤器是这个,并且它是1列的唯一过滤器
->where('users.name', 'LIKE', '%'.$filterValue.'%')
如果该值存在于我的任何列中,那么我该如何使用相同的值来过滤所有我左连接的表中的所有列。
只需使用orWhere
。
$collection->where('sth', '=', '%'.$xxxx.'%')
->orWhere('sth_other', '=', '%'.$xxxx.'%')
->orWhere(...)
...
->get();
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句