2016-09-27 6 views
1

Я пытаюсь создать приложение на основе Youtube с Laravel 5.3. Используя библиотеку, я могу успешно извлечь данные из списка воспроизведения и отобразить ее. Он отформатирован так:Импорт данных API Youtube в db с использованием Laravel 5.3

[ 
    { 
     0: { 
      kind: "youtube#playlistItem", 
      etag: ""I_8x5t5r66_FSaexwefRREftGc0/BO3zvggHrzgTTh_ZhXr745ww"", 
      id: "UExDQXc3VFJvaVBIX2VuXzMtcThnWW9ZZUc4YlVmX2dOUC4wMTcyMDhGQUE4NTIzM0Y5", 
      snippet: { 
       publishedAt: "2014-10-06T15:50:12.000Z", 
       channelId: "UCGT2vvwtBJ-0edGHEj5Tv67Q", 
       title: "S'More - La ricetta dei biscotti", 
       description: "Sul blog la storia, la ricetta e le foto", 
       thumbnails: { 
        default: { 
         url: "https://i.ytimg.com/vi/Hug-iFvDS3s/default.jpg", 
         width: "120", 
         height: "90" 
        }, 
        medium: { 
         url: "https://i.ytimg.com/vi/Hug-iFvDS3s/mqdefault.jpg", 
         width: "320", 
         height: "180" 
        }, 
        high: { 
         url: "https://i.ytimg.com/vi/Hug-iFvDS3s/hqdefault.jpg", 
         width: "480", 
         height: "360" 
        }, 
        standard: { 
         url: "https://i.ytimg.com/vi/Hug-iFvDS3s/sddefault.jpg", 
         width: "640", 
         height: "480" 
        }, 
        maxres: { 
         url: "https://i.ytimg.com/vi/Hug-iFvDS3s/maxresdefault.jpg", 
         width: "1280", 
         height: "720" 
        } 
        }, 
        channelTitle: "Ricette di Famiglia", 
        playlistId: "PLCAB2ddt6H_en_3-q8gRfTYsbUf_gNP", 
        position: "0", 
        resourceId: { 
         kind: "youtube#video", 
         videoId: "Hug-iFvDS3s" 
        } 
       } 
      }, 
... 
] 

Мой следующий шаг должен был бы захватывая массив, содержащий данные, относящиеся к видео, удобно отображать каждый элемент в экземпляр класса Video и, наконец, хранить каждый видеосюжет в моей базе данных. Кто-нибудь знает, как я могу добиться этого?

ответ

1

Вы можете выполнить это, используя следующее. Из ответа API, который вы указали в своем вопросе, есть массив объектов, и у этих объектов есть объекты внутри них, поэтому вам понадобятся два цикла.

// $json is the JSON response you get from the API 
$entities = json_decode($json); 

foreach ($entities as $entity) { 
    $items = get_object_vars($entity); 

    // Each $item is a video object from the API response 
    foreach ($items as $item) { 
     // Create a new Video object and persist it in the DB 
     $video = new Video(); 
     $video->create([ 
      'kind' => $item->kind, 
      'published_at' => $item->publishedAt, 
      ... 
     ]); 
    } 
}