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

如何修改PHP Laravel代码输出status为0和4的提现记录?

解决Laravel查询多个提现状态记录的问题

要查询status为0和4的提现记录,你需要把原来的精确匹配查询改成多值匹配,同时可以优化用户查询避免性能问题,具体修改如下:

核心修改点

  • 将where(['status' => 0])替换为whereIn('status', [0, 4]):whereIn方法支持传入值数组,能匹配字段值在数组范围内的所有记录
  • 优化用户信息查询:原代码循环中每次单独查询User会导致N+1数据库查询问题,建议用Laravel的关联预加载with方法一次性加载所有关联用户

修改后的完整代码

public function getWithdraws(Request $request)
{
    // 使用whereIn匹配status为0和4的记录,同时预加载关联的user模型
    $data = Withdraw::whereIn('status', [0, 4])
                    ->with('user')
                    ->latest('id')
                    ->paginate(10);

    // 通过预加载的关联直接获取用户信息,避免循环查询
    foreach ($data->items() as $key) {
        $key->name = $key->user->name;
        $key->balance = $key->user->balance;
        $key->verified = $key->user->verified;
    }

    return response(['success' => $data]);
}

额外说明

需要确保你的Withdraw模型中已经定义了与User模型的关联关系,在Withdraw.php中添加:

public function user()
{
    return $this->belongsTo(User::class);
}

如果暂时不想用关联预加载,也可以仅修改查询条件保留原循环(不推荐,数据量大时性能较差):

// 仅修改查询条件,保留原循环逻辑
$data = Withdraw::whereIn('status', [0, 4])->latest('id')->paginate(10);

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.14 06:45:57