Laravel:使用关系表计算行数

Nen*_*d M 0 count relationship laravel eloquent laravel-5

我有两张相关的桌子.

结算:

| id | reon_id | 名字|

add_members:

| id | settlement_id | first_name | last_name | cipher_id |

在结算模型中他们的相关如下:

public function members()
{
    return $this->hasMany('App\AddMember');
}
Run Code Online (Sandbox Code Playgroud)

所以,首先我需要reon_id为1的所有成员,所以我喜欢这样:

$members = Settlement::where('reon_id', '1')
  ->with('members')
  ->count();
Run Code Online (Sandbox Code Playgroud)

这很有效.但是现在,我需要同样的东西,但也需要cipher_id为1.如果我在 - > with('members')之后添加 - > where('cipher_id','1')我得到这个错误:

(2/2)QueryException SQLSTATE [42S22]:找不到列:1054'where子句'中的未知列'cipher_id'

哪里错了?

Lui*_*noz 5

您需要使用whereHas来正确查询相关表.

$members = Settlement::with('members')->whereHas('members', function($query){
      $query->where('cipher_id', 1);
})->where('reon_id', '1')->count();
Run Code Online (Sandbox Code Playgroud)

说明

WhereHas只接受满足条件的父母.在这种情况下,如果相关模型成员cipher_id不是1,则不会显示结算