Laravel将Collection循环结果分块 实现两列布局每列5条内容
问题原因
- 你现有代码仅配置了
$loop->first(循环第一条时触发)和$loop->last(循环最后一条时触发)的输出判断,中间的8条数据没有匹配到任何输出条件,所以只会显示首尾两条内容。
实现方案
方案1:使用Laravel集合chunk方法(推荐)
Laravel的查询结果默认是Collection实例,直接调用chunk()方法即可按指定数量拆分分组,10条数据调用chunk(5)会自动拆成2组,刚好对应两列每列5条:
<div class="row"> {{-- 按5条一组拆分公告集合 --}} @foreach ($allbulletin->chunk(5) as $columnItems) <div class="col"> <ul> @foreach ($columnItems as $bullet) <li>{{ $bullet->title }}</li> @endforeach </ul> </div> @endforeach </div>
注:上述代码里的
row、col为Bootstrap栅格类,你可以替换成你自己项目里的两列布局样式类。
方案2:通过循环索引手动拆分
如果不想用集合方法,也可以通过$loop->iteration(从1开始的循环计数)判断换列时机:
<div class="row"> <div class="col"> <ul> @foreach ($allbulletin as $bullet) <li>{{ $bullet->title }}</li> {{-- 第5条输出完成后切换列 --}} @if ($loop->iteration === 5) </ul> </div> <div class="col"> <ul> @endif @endforeach </ul> </div> </div>
内容的提问来源于stack exchange,提问作者Infinite Solutions
相关产品推荐
相关产品推荐

