问题描述
我正在使用 Laravel viewmodels 重构从 API 返回的数据。 以下是我用来格式化特定数据的函数
public function similar()
{
$similarCollection = collect($this->similar)->map(function($movie){
return collect($movie)->merge([
'poster_path' => $movie['poster_path'] ?
'https://image.tmdb.org/t/p/w500/'.$movie['poster_path']
: 'https://via.placeholder.com/500x750?text='.$movie['title'],'backdrop_path' => $movie['backdrop_path']
?'https://image.tmdb.org/t/p/original/'.$movie['backdrop_path']
:'https://via.placeholder.com/500x750?text='.$movie['title'],])->only([
'poster_path','title','backdrop_path','backdrop_path'
]);
});
dd($similarCollection);
}
上面dd()后的函数返回如下数组
Illuminate\Support\Collection {#394 ▼
#items: array:20 [▼
0 => Illuminate\Support\Collection {#357 ▼
#items: array:3 [▼
"title" => "The Fox and the Hound"
"backdrop_path" => "https://image.tmdb.org/t/p/original//87uShMszqPxwA034GsskGdzJOgN.jpg"
"poster_path" => "https://image.tmdb.org/t/p/w500//1382VHxqZDXu2t8i46zf4fP71JG.jpg"
]
}
1 => Illuminate\Support\Collection {#359 ▶}
2 => Illuminate\Support\Collection {#358 ▶}
3 => Illuminate\Support\Collection {#374 ▶}
4 => Illuminate\Support\Collection {#371 ▶}
5 => Illuminate\Support\Collection {#361 ▶}
6 => Illuminate\Support\Collection {#362 ▶}
7 => Illuminate\Support\Collection {#363 ▶}
8 => Illuminate\Support\Collection {#366 ▶}
9 => Illuminate\Support\Collection {#367 ▶}
10 => Illuminate\Support\Collection {#354 ▶}
11 => Illuminate\Support\Collection {#353 ▶}
12 => Illuminate\Support\Collection {#360 ▶}
13 => Illuminate\Support\Collection {#403 ▶}
14 => Illuminate\Support\Collection {#401 ▶}
15 => Illuminate\Support\Collection {#396 ▶}
16 => Illuminate\Support\Collection {#400 ▶}
17 => Illuminate\Support\Collection {#402 ▶}
18 => Illuminate\Support\Collection {#368 ▶}
19 => Illuminate\Support\Collection {#395 ▶}
]
}
在我的刀片视图中,我使用此代码循环遍历每个项目并将背景路径显示为图像
@foreach ($similar['backdrop_path'] as $image)
<div class="mt-8">
<a href="#">
<img src="{{ $image }}" alt="Poster">
</a>
</div>
@endforeach
问题是它导致“尝试访问类型为 null 的值的数组偏移量”错误消息。 我怎样才能达到预期的结果?谢谢。
解决方法
你必须像下面这样使用
@foreach ($similarCollection as $image)
<div class="mt-8">
<a href="#">
<img src="{{ $image->backdrop_path }}" alt="Poster">
</a>
</div>
@endforeach