tengo 5 filtros, kampus, fakulti, programa, semestre y estado, por lo que cada filtro siempre ha sido filtro con estado, lo que significa que el filtro de estado será la selección del caso del interruptor y el otro filtro será la condición en el ejemplo del caso del interruptor:
$student = Student::select("*"); if($student){ $today = date("Ymd"); switch($request->stat){ case 'Y': if($request->kampus != "-" && $request->fakulti != "-" && $request->program != "-" && $request->part != "-" ){ $rs = $student->where('kodkampus',$request->kampus) ->where('kodfakulti',$request->fakulti) ->where('kodprogram',$request->program) ->where('part',$request->semester) ->where('vaccine_date', '<=', $today) ->where('vaccine2_date', '<=', $today); } else if ($request->kampus != "-" && $request->fakulti != "-" && $request->program != "-" ){ $rs = $student ->where('kodkampus',$request->kampus) ->where('kodprogram',$request->program) ->where('kodfakulti',$request->fakulti) ->where('vaccine_date', '<=', $today) ->where('vaccine2_date', '<=', $today); } else if ($request->kampus != "-" && $request->fakulti != "-"){ $rs = $student->where('kodkampus',$request->kampus) ->where('kodfakulti',$request->fakulti) ->where('vaccine_date', '<=', $today) ->where('vaccine2_date', '<=', $today); } else if ($request->kampus != "-"){ $rs = $student->where('kodkampus',$request->kampus) ->where('vaccine_date', '<=', $today) ->where('vaccine2_date', '<=', $today); } $rs = $rs->get(); break; case 'D1': $rs = Student::get(); break; } return datatables() ->of($rs)->make(true); }else{ abort(404,'no record'); }entonces necesito que el filtro pueda filtrar individualmente sin necesidad de cumplir con todas las condiciones, por ejemplo, si quiero filtrar solo fakulti, puedo hacerlo sin elegir kampus, programa y semestre. Realmente necesito ayuda y necesito que sea un filtro individual pero en la misma consulta.
por favor, ayúdenme, estoy atascado unos 3 días, y soy nuevo en laravel, usando eloquent y datatable
No tienes que hacerlo con if else
Es un generador de consultas, puede apilar los dónde en el generador de consultas $student
if(!$student){ return abort(404,'no record'); } $today = date("Ymd"); if ($request->stat == 'Y'){ if($request->part != "-" ){ $student->where('part',$request->semester) } if ($request->program != "-" ){ $student->where('kodprogram',$request->program) } if ($request->fakulti != "-"){ $student->where('kodfakulti',$request->fakulti); } if ($request->kampus != "-"){ $student->where('kodkampus',$request->kampus) ->where('vaccine_date', '<=', $today) ->where('vaccine2_date', '<=', $today); } $rs = $student->get(); } else { $rs = Student::get(); } return datatables() ->of($rs)->make(true); Cambió el interruptor por otro if else porque no quiere terminar con una undefined variable $rs si $request->stat es más cercano a Y o D1