【问题标题】:How to call model in Controller request $request如何在控制器请求 $request 中调用模型
【发布时间】:2019-05-29 11:21:47
【问题描述】:

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

【问题讨论】:

  • 你能显示select2请求参数的示例值吗?

标签: laravel laravel-5


【解决方案1】:

假设您的 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();
  }
}

【讨论】:

  • 也许 ->get() 比 ->first() 更好,如果目的是获得多个老师
  • 谢谢。我还必须在我的控制器中添加以下行; $id = $request->get('select2'); $teachers = 老师::teacher($id);
猜你喜欢
  • 2018-02-28
  • 2023-04-09
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-11-02
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多