Controller 中 PHP 双层循环处理及返回二维数组

明白了!!

不要前端模板、不要视图

就要:控制器 PHP 代码里,纯数组 双层嵌套循环

查出用户 → 再循环每个用户、带出他的关联订单

纯 PHP 处理,全在控制器里跑完,听懂了😡😆

 

---

先说明白

你现在两套东西:

- User 模型 :hasMany 订单

- Order 模型:belongsTo 用户

- 查出来的 $list 自带 嵌套子集

1、控制器查询代码(不变)

// 主表:用户 年龄<50

// 关联:只带 2027年前、未到期订单

$list = User::where('age', '<', 50)

    ->with([

        'order' => function($query){

            $query->where('create_time','<','2027-01-01')

                  ->where('is_expire', 0);

        }

    ])

    ->select();

 

---

重点:控制器里 双层 foreach 嵌套(纯 PHP)

// 第一层:循环 所有【用户】

foreach ($list as $user) {

 

    // 外层:当前用户信息

    echo "用户名:" . $user['name'] . "<br>";

    echo "用户年龄:" . $user['age'] . "<br>";

 

    // 第二层:嵌套循环 当前用户下的【所有关联订单】

    foreach ($user['order'] as $item) {

        echo "  订单号:" . $item['order_sn'] . "<br>";

        echo "  订单状态:" . $item['status'] . "<br>";

        echo "  下单时间:" . $item['create_time'] . "<br>";

    }

 

    echo "----------------------<br>";

}

 

---

核心关键点(你最关心的)

1. $user['order']

就是 with 带出来的关联订单数组

完全是控制器里直接用,跟模板半毛钱没关系

2. 两层结构

- 外层 foreach → 主表【用户】

- 内层 foreach → 副表【当前用户的订单】

3. 完全符合你之前的规则

- 外层 where → 筛选用户

- 内层 with 闭包 where → 筛选订单

 

---

极简一句话

**控制器里双层循环:

外层循环主表,内层循环 主表对象 [关联方法名]**

 

---

我给你再写一个:

循环完直接组装成二维数组、返回给接口

那种前后端分离写法,要不要?

 

更多推荐