ThinkPHP 模板双层嵌套循环详解:从主表到关联表

 

专门讲:ThinkPHP 模板 双层嵌套循环

就是:

一层客户 → 里面再循环他的多条订单

完美对应你现在的 用户模型 hasMany 订单

 

---

先记住核心逻辑

1. 外层循环:主表数据(用户 / 客户)

2. 内层循环:当前这个用户的关联订单

3. 内层写的字段,全是 order 订单表 的字段

 

---

一、控制器提前查好(你已经会了)

// 外层where=用户,内层where=订单

$userList = User::with([

    'order' => function($q){

        $q->where('status',1)->where('end_time','<','2027-01-01');

    }

])->where('age','<',50)->select();

 

$this->assign('userList', $userList);

 

---

二、模板双层嵌套循环【重点!你要的】

<!-- 第一层:循环所有 用户/客户  主表 -->

{volist name="userList" id="user"}

    <div class="user-item">

        <!-- 主表字段:用户信息 -->

        用户名:{$user.name}

        年龄:{$user.age}

 

        <!-- 第二层:嵌套循环 当前用户下面的 订单列表 关联表 -->

        {volist name="$user.order" id="ord"}

            <div class="order-item">

                订单号:{$ord.order_sn}

                订单状态:{$ord.status}

                到期时间:{$ord.end_time}

            </div>

        {/volist}

 

    </div>

{/volist}

 

---

 

更多推荐