Получить доступ к массиву данных в JSON с помощью Laravel & Guzzle

Я пытаюсь получить данные из API, который дает ответ следующим образом:

{
   "data":[
      {
         "first_name":"John",
         "last_name":"Smith",
         "group":"3",
         "email":"jsmith@talktalk.net"
      },
      {
         "first_name":"John",
         "last_name":"Doe",
         "group":"3",
         "email":"johndoe@aol.com"
      }
   ],
   "meta":{
      "pagination":{
         "total":2,
         "count":2,
         "per_page":500,
         "current_page":1,
         "total_pages":1,
         "links":[

         ]
      }
   }
}

Я пытаюсь использовать Guzzle для импорта в мое приложение Laravel

$client = new \GuzzleHttp\Client();
      $response = $client->request('GET', 'http://localhost/members.json');
      $data = (string) $response->getBody();

и затем foreach, чтобы перебрать каждую запись и затем добавить ее в базу данных. Прямо сейчас, хотя я изо всех сил пытаюсь углубиться в отчет.

Что мне не хватает?

РЕДАКТИРОВАТЬ: вот foreach

foreach ($data['data'] as $person) {
        Contact::create(array(
          'name' => $person->first_name,
        ));
      }

1 ответ

Решение

Ваш $data переменная содержит JSON. Давайте сначала создадим хороший массив, а затем пройдемся по нему

$response = json_decode($data, true);

Теперь сам цикл:

foreach($response['data'] as $element) {
    $firstName = $element['first_name'];
    $lastName = $element['last_name'];
    $group = $element['group'];
    $email = $element['email'];
    //Now here you can send it to the modele and create your db row.
}
Другие вопросы по тегам