Laravel:使用关系表计算行数

问题描述 投票:0回答:1

我有两张相关的桌子。

结算:

| 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.如果我在 - > with('members')之后添加 - > where('cipher_id','1')我得到这个错误:

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

哪里错了?

laravel laravel-5 count eloquent relationship
1个回答
5
投票

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

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

说明

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

© www.soinside.com 2019 - 2024. All rights reserved.