Laravel 8 Eloquent中无法正确使用whereNotExists子句的问题仍未解决
P粉287726308
P粉287726308 2023-09-05 16:08:35
0
1
673
<p>我有两个表,一个是包含不同用户的表,另一个是名为“factures”的发票表,它有一个外键userid,我称之为client_id。我想要得到的是由某个管理员创建并且还没有发票的客户数量。这是我尝试的代码:</p> <pre class="brush:php;toolbar:false;">$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();</pre> <p>但是这个查询给我返回了所有由$member_id创建的客户,没有例外。 我的查询有什么问题吗?</p>
P粉287726308
P粉287726308

全部回复(1)
P粉670838735

你尝试了以下内容吗:

$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相结合。

热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板