You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.03 14:06:00