无法在 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
第三个条件。
我有 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
第三个条件。