-
라라벨에서 TMDB api사용하기(3)Laravel/TMDB api를 이용한 영화 사이트 만들기 2020. 4. 6. 15:24728x90
가져온 데이터중에 영화의 장르를 알아야 할건데 그건
genre_ids배열이다 근데 내용은 없고 배열로
"genre_ids" => array:2 [▼ 0 => 18 1 => 10749 ]
이렇게 되어 있다. 그렇다는 뜻은 18과 10749 의 숫자들이 가르키는 장르를 맵핑 시켜야 한다는건데
$genresArray = Http::withToken(config('services.tmdb.token'))
->get('https://api.themoviedb.org/3/genre/movie/list')
->json()['genres'];
$genres = collect($genresArray)->mapWithKeys(function ($genre)
{
return [$genre['id'] => $genre['name']];
});이 사이트에서 토큰을 이용하여 저 로직이 자세히는 모르겠는데
$genresArray에서 response 받은 값을 보면
array:19 [▼ 0 => array:2 [▼ "id" => 28 "name" => "Action" ] 1 => array:2 [▼ "id" => 12 "name" => "Adventure" ]
즉, id 의 값을 알면 name 값을 알 수 있는데
위에 로직이 id값을 이용해 자동으로 name 을 맵핑 시켜주게 만드는 로직 같다.
전 : $genresArray 값
0 => array:2 [▼ "id" => 28 "name" => "Action" ] 1 => array:2 [▼ "id" => 12 "name" => "Adventure" ]
후 : $genres값
#items: array:19 [▼ 28 => "Action" 12 => "Adventure" 16 => "Animation" 35 => "Comedy" 80 => "Crime" 99 => "Documentary" 18 => "Drama" 10751 => "Family" 14 => "Fantasy" 36 => "History" 27 => "Horror" 10402 => "Music" 9648 => "Mystery" 10749 => "Romance" 878 => "Science Fiction" 10770 => "TV Movie" 53 => "Thriller" 10752 => "War" 37 => "Western" ]
차이점을 알겠지만 아이디값이 자동으로 name 반환하게 바꿔준것이다.
https://threeyears.tistory.com/41?category=869732
이 헬퍼 함수를 통해 장르를 $genre에 담아서 index.blade.php로 넘깁니다.
@foreach($movie['genre_ids'] as $genre)
{{$genres[$genre]}} @if(!$loop->last), @endif
@endforeach장르부분에 이런식으로 넣으면 나는 $movie['genre_ids']를 알고 있기 떄문에
$genres는 컨트롤러에서 넘어온 값으로
즉,{{$genres[$genre]}} 이렇게 출력하게 되면
ad아스트라 영화를 기준으로 예를 들면
$movie['genre_ids']값이 = 18,878
{{$genres['18'] => Drama}}
{{$genres['878'] => Science Fiction}}
이렇게 출력값을 얻을 수 있다!!
@if(!$loop->last), @endif 이거는 대충 루프할게 없을때까지 즉 값이 아예 없을때 foreach문이 에러가 나기 떄문에
728x90'Laravel > TMDB api를 이용한 영화 사이트 만들기' 카테고리의 다른 글
라라벨에서 TMDB api사용하기(5) (0) 2020.04.06 라라벨에서 TMDB api사용하기(4) (0) 2020.04.06 라라벨에서 TMDB api사용하기(2) (0) 2020.04.03 라라벨에서 TMDB api 사용하기 (1) (0) 2020.04.03 TMDB api 사용하는 방법! (0) 2020.04.03