Laravel数组数据传Blade仅显示最后一条及歌手去重问题
问题修复方案
问题根因
- 循环逻辑中每次遍历都会覆盖
$singers变量,循环执行完成后变量仅保存最后一次遍历得到的歌手数组,因此模板中只能渲染最后一条记录的歌手信息 - 未对多轮查询拿到的歌手数据做合并、去重处理,存在重复名称
修正后控制器代码
// 初始化空数组存储全部歌手名称 $singers = []; foreach ($tracks as $key => $track) { // 查询当前曲目关联的歌手,注意变量名不要和总歌手数组重名避免覆盖 $currentTrackSingers = Singers::whereIn('id', $track->singers_id) ->pluck('singers_name') ->toArray(); // 将当前曲目歌手合并到总歌手数组 $singers = array_merge($singers, $currentTrackSingers); } // 对总歌手数组去重,并重排索引 $singers = array_values(array_unique($singers)); // 传递变量到模板 return view('对应模板路径', compact('singers'));
Blade模板代码
模板原有逻辑无需调整,直接使用处理后的数组拼接即可:
{{ implode(' & ', $singers) }}
最终效果
针对给出的测试数据,最终渲染结果为:
Norman & vicky & Ella Mai
重复的歌手名称自动去重,所有关联歌手都会正常展示。
内容的提问来源于stack exchange,提问作者Kloud oZ
相关产品推荐
相关产品推荐

