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

Laravel控制器如何构造查询获取父模型及专属关联子模型用于嵌套循环

实现方案

第一步:调整控制器查询逻辑

你已经定义好了模型关联,直接使用Laravel的关联预加载即可,不需要单独查询全部书桌,修改后控制器代码如下:

class RoomController extends Controller
{
    public function index()
    {
        // 预加载每个房间关联的书桌数据,避免N+1查询问题
        return view('index', [
            'rooms' => Room::with('desks')->get()
        ]);
    }
}

第二步:修改视图层的嵌套循环

把原来遍历全局$desks的逻辑,改成遍历当前房间关联的书桌集合即可:

<div class="grid grid-cols-1 gap-3 ">
    @foreach ($rooms as $room)
        <div class="bg-white text-center h-auto">
            {{ $room->name }}
            <div class="m-3">
                <div class="lg:grid lg:grid-cols-6 gap-3">
                    @foreach ($room->desks as $desk)
                        <div class="bg-red-200 text-center h-10">
                            Desk {{ $desk->id }}
                        </div>
                    @endforeach
                </div>
            </div>
        </div>
    @endforeach
</div>

补充说明

  • with('desks')会执行两次查询:一次查全部房间、一次查这些房间对应的所有书桌,自动匹配关联关系,性能远高于循环内单独查询
  • 模型定义的hasMany关联会自动挂载desks动态属性,直接通过$room->desks就能拿到当前房间对应的所有书桌

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.30 12:45:05