如何在Controller request $ request中调用模型

时间:2019-05-28 10:07:33

标签: laravel laravel-5

我的模型中有一个查询,我想在控制器中调用它(请求$ 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。

1 个答案:

答案 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();
  }
}