代码之家  ›  专栏  ›  技术社区  ›  Vishal Patel

在Laravel 5中的紧急加载中应用Where子句

  •  0
  • Vishal Patel  · 技术社区  · 9 年前

    我的数据库中有两个表:

    1. tbl_patient_master(待定)
    2. 待定部门主管

    的列 tbl_patient_master(待定) 表为:

    • 患者id
    • 患者姓名
    • 部门id
    • 创建时间
    • 更新时间

    的列 待定部门主管 表为:

    • 部门id
    • 部门名称
    • 部门类型

    现在我想展示一个特定患者的列表 部门 。如果用户说“ENT”,则应返回所有具有“ENT”科室的患者。

    为此,我在模型中创建了以下关系。

    public function department()
    {
        return $this->belongsTo('App\Entities\Department','dept_id'); 
    }
    

    以及在我的控制器中获取数据的代码:

    $patients = $this->repository->with(array('department' => function ($query) use ($dept_name)
    {
         $query->where('dept_name', '=', $dept_name);
    }))->all();
    

    不幸的是,这将返回所有患者,而不仅仅是来自特定科室的患者。 我应该怎么做才能让所有患者都来自某个特定科室?

    谢谢

    2 回复  |  直到 9 年前
        1
  •  0
  •   user2094178    9 年前

    如果您想从 Patient 模型透视图,您可以选择使用 whereHas .

    $dept_name = Input::get('dept_name');
    
    $patients = Patient::whereHas('department', function ($query) use ($dept_name) {
        $query->where('dept_name', '=', $dept_name);
    })->get();
    
        2
  •  0
  •   vmanolov    9 年前

    你不需要使用 储存库 ,只需使用 病人 模型 您已经定义了关联,因此这应该有效:

    App\Patient::where('dept_name', '=', 'ENT');