微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

Laravel:如何在 Laravel Blade 中使用 Group By?

如何解决Laravel:如何在 Laravel Blade 中使用 Group By?

我正在尝试获取所有插槽,然后按房间对它们进行分组。在我看来,我想要一排房间:

<tr>
    <td>Room ID 1</td>
    <td>Slot ID 1</td>
    <td>Slot ID 2</td>
    <td>Slot ID 3</td>
    .................
</tr>
<tr>
    <td>Room ID 2</td>
    <td>Slot ID 1</td>
    <td>Slot ID 2</td>
    <td>Slot ID 3</td>
    .................
</tr>

我相信我很接近,但不确定“Laravel方式”。数据看起来不错 - 因为查询正在正确获取/分组,我认为我的困难在于了解如何遍历集合。

MyController.PHP

public function routineViewDayWise()
{
    $sunday_routines = Routine::where('day_id',1)->orderBy('room_id')->get()->groupBy('room_id');
    return view('day_wise_routine',compact('sunday_routines'));
}

在我看来,我可以看到我得到了这个:

MyView.blade.PHP

#items: array:4 [▼
2 => Illuminate\Database\Eloquent\Collection {#1323 ▼
  #items: array:2 [▼
    0 => App\Models\Routine {#1339 ▶}
    1 => App\Models\Routine {#1340 ▶}
  ]
}
4 => Illuminate\Database\Eloquent\Collection {#1322 ▶}
6 => Illuminate\Database\Eloquent\Collection {#1336 ▶}
8 => Illuminate\Database\Eloquent\Collection {#1335 ▶}]

解决方

这是获得我想要的输出的视图。

MyView.blade.PHP

@foreach($sunday_routines as $room_id => $routines)
<tr>
    <td>{{ $room_id }}</td>
    @foreach($routines as $routine)
        <td>{{ $routine->slot_id }}</td>
    @endforeach
</tr>@endforeach

解决方法

嗨,朋友,请将以下内容更新为将 groupBy() 放在 get()

之前
public function routineViewDayWise()
{
   $sunday_routines = Routine::where('day_id',1)->orderBy('room_id')->groupBy('room_id')->get();
   return view('day_wise_routine',compact('sunday_routines'));
}

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。