Laravel Eloquent查询如何对指定ID记录跳过whereNotNull筛选条件
实现方案
直接在查询构造器层面调整条件即可,不需要后续手动拼接集合重排,效率更高逻辑更清晰。
修改后代码
// 替换为你需要豁免的指定ID值 $exemptId = 123; $reviews = Review::query() ->orderBy("id", 'desc') ->where(function ($query) use ($exemptId) { // 两个条件满足其一即可 $query->whereNotNull('published_at') ->orWhere('id', $exemptId); }) ->get();
方案说明
- 用条件分组包裹两个筛选规则,逻辑为只要满足
published_at不为空或者id等于指定豁免ID任意一条规则的记录都会被返回,完全匹配需求 - 查询结果会自动按
id倒序排列,不需要二次处理排序 - 天然避免重复记录问题:哪怕指定豁免ID的记录本身已经满足
published_at不为空的要求,也只会返回一次 - 不会和后续可能添加的其他全局筛选条件产生逻辑优先级冲突
内容的提问来源于stack exchange,提问作者Sergey
相关产品推荐
相关产品推荐

