无法在 Laravel 8 Eloquent 中正确使用 whereNotExists 子句

Couldn't use the whereNotExists clause correctly in Laravel 8 Eloquent

我有 2 个 table,一个有不同的用户,第二个 table 是一张名为“factures”的发票 table 并且有一个外键 userid,我调用它 client_id,我想得到的是客户的数量 created_by 某个管理员并且还没有发票,这是我尝试过的:

$clients = User::select('id')
            ->where([['created_by',$membre_id],['role','Client']])
            ->orWhere([['updated_by',$membre_id],['role','Client']])
            ->whereNotExists(function($query)
              {
                  $query->select(DB::raw('client_id'))
                        ->from('factures')
                        ->where('created_by',$member_id);

              })->get();

但此查询无一例外地为我提供了所有客户 created_by $member_id。 我的查询有什么问题?

您是否尝试过以下方法:

$clients = User::select('id')
    ->where(function($query) use($member_id){
        $query->where([['created_by',$membre_id],['role','Client']])
            ->orWhere([['updated_by',$membre_id],['role','Client']])
    })
    ->whereNotExists(function($query) use($member_id){
        $query->select(DB::raw('client_id'))
            ->from('factures')
            ->where('created_by',$member_id);
    })
    ->get();
}

此答案仅在前两个条件(created_by 和 updated_by)之间应用了 OR 条件,其结果是 AND 第三个条件。