我正在尝试清理代码,并在模型上工作
我有以下2个表,如下所示:
转台
|id|roll_id|member_id|.......
会员表
|id|first_name|last_name|rank|
我的Roll模型上有以下内容
public function member()
{
return $this->belongsTo('App\Member');
}
这在我的会员模型上
public function roll()
{
return $this->hasMany('App\Roll');
}
以下代码确实返回正确的结果
$roll = Roll::with(['member'])
->where('status', '!=', 'A')
->get();
return ($roll);
我想添加一个额外的where子句
->where('rank','<', 12)
但是,出现以下错误
SQLSTATE [42S22]:找不到列:1054未知列'member.rank' 在“ where子句”中(SQL:从
Roll
中选择*,其中roll_id
= 4,然后status
!= A和`mem▶“
答案 0 :(得分:3)
您可以使用whereHas
方法来过滤关系:
$roll = Roll::with(['member'])
->where('status', '!=', 'A')
->whereHas('member', function($query) {
$query->where('members.rank', '<', 12);
})
->get();
希望这可以解决您的问题。