[英]Apply Where clause in eager loading in Laravel 5
我的数据库中有两个表:
tbl_ Patient_master表的列为 :
tbl_dept_master表的列为 :
现在,我想显示一个特定部门的患者名单。 如果用户说“ 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();
不幸的是,这将使所有患者返回,而不仅仅是特定部门的患者。 我应该怎么做才能让所有患者都来自某个特定部门?
谢谢。
您不需要使用存储库 ,只需使用Patient模型。 您已经定义了关联,因此这应该起作用:
App\Patient::where('dept_name', '=', 'ENT');
如果要从“ Patient
模型角度进行操作,则可以选择使用whereHas
。
$dept_name = Input::get('dept_name');
$patients = Patient::whereHas('department', function ($query) use ($dept_name) {
$query->where('dept_name', '=', $dept_name);
})->get();
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.