我的模型中有一个查询,我想在控制器中调用它(请求$ request)。当controller参数为controller($ id)时,它工作正常。但是如何在$ request控制器中传递它。
带查询的教师模型:
class teacher extends Model
{
public static function teacher($id)
{
return DB::table('teachers')
->leftjoin('religions', 'teachers.religion_id', '=', 'religions.id')
->leftjoin('areas', 'teachers.area_id', '=', 'areas.id')
->select('teachers.*','religions.*','areas.*')
->where('teachers.id',$id)
->first();
}
调用此模型的控制器可以很好地传递直接ID:
public function report1($id)
{
$teacher = Teacher::teacher($id);
return View('teachers.report1' ,compact('teacher'));
}
我要在其中调用的控制器:
public function printreports(Request $request)
{
$teachers = $request->get('select2');
return view('teachers.report1',compact('teachers'));
}
注意:select2
包含我要在其中运行模型查询的教师ID。
答案 0 :(得分:2)
假设您在select2请求参数中有一个ID数组,可能最简单的方法是按以下方式更改教师模型的查询:
use Illuminate\Support\Arr;
class teacher extends Model
{
public static function teacher($id)
{
return DB::table('teachers')
->leftjoin('religions', 'teachers.religion_id', '=', 'religions.id')
->leftjoin('areas', 'teachers.area_id', '=', 'areas.id')
->select('teachers.*','religions.*','areas.*')
->whereIn('teachers.id', Arr::wrap($id))
->get();
}
}