Получить доступ к массиву данных в 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.
}