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

Laravel 控制器返回嵌套列表时如何按指定user_id过滤关联订单数据

实现方案

你可以通过 Laravel 关联预加载的闭包过滤功能实现需求,分两种常用场景选择即可:

场景1:保留全部Item条目,仅过滤每个Item下的orders数据

该写法会返回所有Item,每个Item的orders字段仅保留匹配传入$user_id的订单,无匹配订单的Item对应的orders为空数组:

function get_orders($user_id){
    $items = Item::with(['Order' => function($query) use ($user_id) {
        $query->where('user_id', $user_id);
    }])->get();
    return $items;
}

场景2:仅返回存在匹配订单的Item,同时过滤orders数据

该写法会先筛选出至少有一个符合$user_id条件订单的Item,再过滤关联的orders数据,不会返回orders为空的Item:

function get_orders($user_id){
    $items = Item::with(['Order' => function($query) use ($user_id) {
        $query->where('user_id', $user_id);
    }])->whereHas('Order', function($query) use ($user_id) {
        $query->where('user_id', $user_id);
    })->get();
    return $items;
}

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.17 23:06:06