Я пытаюсь преобразовать JSON из вызова API на другой сайт Laravel в красноречивую модель, чтобы сохранить данные на локальном веб-сервере. У меня возникла проблема с преобразованием JSON, запрошенным с главного сервера, в красноречивый метод сохранения. Вот текущий код, который у меня есть.Convert Guzzle запросил JSON для Eloquent
public function add(Request $request)
{
// lets request the airport identifier from the central database
$client = new Client();
$res = $client->request('GET', 'http://new.fsvaos.net/api/central/airports', [
'query' => [
'icao' => $request->icao,
]
])->getBody();
// Convert the JSON to something good for Eloquent
$data = json_decode($res, true);
$airport = new Airport();
//return $data;
$airport->id = $data->id;
$airport->name = $data->name;
$airport->icao = $data->icao;
$airport->lat = $data->lat;
$airport->lng = $data->lon;
$airport->hub = 0;
$airport->fuelprice = 0;
$airport->save();
}
Что именно я делаю неправильно?
EDIT: Вот ответ JSON от главного сервера, который я хочу добавить в локальную базу данных.
{
"id": 3682,
"name": "Hartsfield Jackson Atlanta Intl",
"city": "Atlanta",
"country": "United States",
"iata": "ATL",
"icao": "KATL",
"lat": "33.636719000000000",
"lon": "-84.428067000000000",
"alt": "1026",
"timezone": "-5.00",
"daylightsavings": "A",
"tz": "America/New_York"
}
Здесь также дамп данных из массива $ данных
array:1 [▼
0 => array:12 [▼
"id" => 3682
"name" => "Hartsfield Jackson Atlanta Intl"
"city" => "Atlanta"
"country" => "United States"
"iata" => "ATL"
"icao" => "KATL"
"lat" => "33.636719000000000"
"lon" => "-84.428067000000000"
"alt" => "1026"
"timezone" => "-5.00"
"daylightsavings" => "A"
"tz" => "America/New_York"
]
]
Если кто-то хочет попробовать АНИ для себя, чтобы получить ответ JSON, просто сделать GET для http://new.fsvaos.net/api/central/airports?icao=[AIRPORT ИКАО] и вы получите информацию о любом аэропорту со всего мира.
Одной из проблем является то, вы передаете значение TRUE в качестве второго параметра json_decode показывая, что вы хотите массив, но вы ссылаетесь свойства как объект. Попробуйте указать их как $ data ['field']. Вам также необходимо выполнить dd() ответ JSON и добавить его в свой вопрос. Мы не можем вам помочь, если мы не знаем, как выглядит ответ JSON. –
Я только что отредактировал OP, чтобы отразить ваш запрос. Я также попытался сделать $ data ['field'], и я получил неизвестную ошибку. –