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

使用Outlay::all()时如何避免返回status为null的数据

解决Laravel中过滤status为null的Outlay数据问题

方法一:查询时直接过滤(推荐)

直接在数据库查询阶段添加过滤条件,排除status为null的记录,这种方式性能最优,避免无用数据加载到内存中。

修改后的控制器代码:

return response()->json([OutlayResource::collection(Outlay::whereNotNull('status')->get())], 200);

方法二:使用全局作用域(适合多场景复用)

如果项目中多个地方都需要查询status不为null的Outlay数据,可以在模型中定义全局作用域,让所有查询自动应用该过滤规则:

在Outlay模型中添加以下代码:

protected static function booted()
{
    static::addGlobalScope('valid_status', function ($query) {
        $query->whereNotNull('status');
    });
}

添加后,原代码中的Outlay::all()会自动排除status为null的记录,无需每次手动添加条件。

补充说明

  • 方法一适合单次查询场景,灵活可控;
  • 方法二适合需要统一过滤规则的多场景,减少重复代码。

内容的提问来源于stack exchange,提问作者laraCoder

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.31 12:31:07