Laravel:使用关系表计算行数

时间:2017-12-27 14:31:16

标签: laravel laravel-5 count eloquent relationship

我有两张相关的表。

住区:

| id | reon_id |名字|

add_members:

| id | settlement_id | first_name | last_name | cipher_id |

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

public function members()
{
    return $this->hasMany('App\AddMember');
}

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

$members = Settlement::where('reon_id', '1')
  ->with('members')
  ->count();

这是有效的。但现在,我需要同样的东西,但也需要cipher_id为1.如果我添加 - > where(' cipher_id',' 1') - > with('成员')我收到此错误:

(2/2)QueryException SQLSTATE [42S22]:找不到列:1054未知列&c; cipher_id'在' where子句'

我哪里错了?

1 个答案:

答案 0 :(得分:5)

您需要使用whereHas正确查询相关表格。

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

<强>解释

WhereHas只接受满足条件的父级。在这种情况下,如果相关模型成员cipher_id不是1

,则不会显示结算