从Laravel中的模型添加多个Where子句

时间:2019-02-26 05:23:45

标签: laravel model

我正在尝试清理代码,并在模型上工作

我有以下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▶“

1 个答案:

答案 0 :(得分:3)

您可以使用whereHas方法来过滤关系:

$roll = Roll::with(['member'])
    ->where('status', '!=', 'A')
    ->whereHas('member', function($query) {
        $query->where('members.rank', '<', 12);
    })
    ->get();

希望这可以解决您的问题。