Laravel 8 Eloquent中无法正确使用whereNotExists子句的问题仍未解决
P粉287726308
P粉287726308 2023-09-05 16:08:35
[MySQL讨论组]
<p>我有两个表,一个是包含不同用户的表,另一个是名为“factures”的发票表,它有一个外键userid,我称之为client_id。我想要得到的是由某个管理员创建并且还没有发票的客户数量。这是我尝试的代码:</p> <pre class="brush:php;toolbar:false;">$clients = User::select('id') -&gt;where([['created_by',$membre_id],['role','Client']]) -&gt;orWhere([['updated_by',$membre_id],['role','Client']]) -&gt;whereNotExists(function($query) { $query-&gt;select(DB::raw('client_id')) -&gt;from('factures') -&gt;where('created_by',$member_id); })-&gt;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相结合。

热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责申明 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送
PHP中文网APP
随时随地碎片化学习
PHP中文网抖音号
发现有趣的

Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号