从 Php Laravel 中的 Api 响应填充数据库

拜托,我在尝试从 Guzzlehttp 访问此 Api 响应时一直头疼,格式是这里的问题,我不明白我需要帮助。


大家好!拜托,我在尝试从 Guzzlehttp 访问此 Api 响应时一直头疼,格式是这里的问题,我不明白我需要帮助。


这是代码



namespace App\Http\Controllers;


use Illuminate\Http\Request;

use GuzzleHttp\Client;

use App\Country;

use App\Globas;


class DataController extends Controller

{

public function getClient(){

 $client=new Client();

  $response = $client->request('GET', 'https://api.covid19api.com/summary');

  $data= json_decode($response->getBody()->getContents(),true);


//delete all row in the database table

Globas::truncate();

Country::truncate();

  foreach($data as $da){

   Globas::create($da);

   Country::create([

       'Country'=> $data['Country'],

       'CountryCode'=>$data['CountryCode'],

       'Slug'=>$data['Slug'],

       'Date'=>$data['Date'],

       'NewConfirmed'=>$data['NewConfirmed'],

        'TotalConfirmed'=>$data['TotalConfirmed'],

           'NewRecovered'=>$data['NewRecovered'],

              'TotalRecovered'=>$data['TotalRecovered'],

               'NewDeaths'=>$data['NewDeaths'],

               'TotalDeaths'=>$data['TotalDeaths']

   ]);

return $data;

  }

}


}


**This is the Response** 


{"Global":


{"NewConfirmed":259470,"TotalConfirmed":19636772,"NewDeaths":5457,"TotalDeaths":726765,"NewRecovered":201182,"TotalRecovered":11938458},"Countries":[{"Country":"Afghanistan","CountryCode":"AF","Slug":"afghanistan","NewConfirmed":39,"TotalConfirmed":37054,"NewDeaths":5,"TotalDeaths":1312,"NewRecovered":57,"TotalRecovered":25960,"Date":"2020-08-09T17:38:36Z","Premium":[]},


......


{"Country":"Zimbabwe","CountryCode":"ZW","Slug":"zimbabwe","NewConfirmed":124,"TotalConfirmed":4575,"NewDeaths":0,"TotalDeaths":102,"NewRecovered":71,"Total``Recovered":1416,"Date":"2020-08-09T17:38:36Z","Premium":[]}],"Date":"2020-08-09T17:38:36Z"}



**Country Model**


<?php


namespace App;


use Illuminate\Database\Eloquent\Model;


class Country extends Model

{

   protected $fillable=['Country','CountryCode','Slug','Date',

   'NewConfirmed', 'TotalConfirmed','NewRecovered','TotalRecovered','NewDeaths','TotalDeaths'];

}



谢谢...


慕田峪9158850
浏览 160回答 3
3回答

慕工程0101907

我收到 ErrorException (E_NOTICE) 未定义索引:NewConfirmed当我做了这样的事情时&nbsp;foreach($data['Countries'] as $country){&nbsp; &nbsp; &nbsp;$counter=&nbsp; &nbsp;Country::create([&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;'Country'=> $country['Country'],&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;'CountryCode'=>$country['CountryCode'],&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;'Slug'=>$country['Slug'],&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;'Date'=>$country['Date'],&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;'NewConfirmed'=>$country['NewConfirmed'],&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; 'TotalConfirmed'=>$country['TotalConfirmed'],&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;'NewRecovered'=>$country['NewRecovered'],&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; 'TotalRecovered'=>$country['TotalRecovered'],&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;'NewDeaths'=>$country['NewDeaths'],&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;'TotalDeaths'=>$country['TotalDeaths']&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;]);&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; }&nbsp; &nbsp;foreach($data as $da){&nbsp; &nbsp; $globals=Globas::create([&nbsp; &nbsp; &nbsp; &nbsp; 'NewConfirmed'=>$da['NewConfirmed'],&nbsp; &nbsp; &nbsp; &nbsp; 'TotalConfirmed'=>$da['TotalConfirmed'],&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;'NewRecovered'=>$da['NewRecovered'],&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; 'TotalRecovered'=>$da['TotalRecovered'],&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;'NewDeaths'=>$da['NewDeaths'],&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;'TotalDeaths'=>$da['TotalDeaths']&nbsp; &nbsp; ]);&nbsp; &nbsp;&nbsp;&nbsp; &nbsp; }}

月关宝盒

在 foreach 内部,您应该引用 $da 变量,而不是该位置的 $data:Country::create([&nbsp; &nbsp; &nbsp; &nbsp;'Country'=> $data['Country'],&nbsp; &nbsp; &nbsp; &nbsp;'CountryCode'=>$data['CountryCode'],&nbsp; &nbsp; &nbsp; &nbsp;'Slug'=>$data['Slug'],&nbsp; &nbsp; &nbsp; &nbsp;'Date'=>$data['Date'],&nbsp; &nbsp; &nbsp; &nbsp;'NewConfirmed'=>$data['NewConfirmed'],&nbsp; &nbsp; &nbsp; &nbsp; 'TotalConfirmed'=>$data['TotalConfirmed'],&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;'NewRecovered'=>$data['NewRecovered'],&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; 'TotalRecovered'=>$data['TotalRecovered'],&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;'NewDeaths'=>$data['NewDeaths'],&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;'TotalDeaths'=>$data['TotalDeaths']&nbsp; &nbsp;]);另一点是国家也是一个数组,因此您可能应该为国家创建另一个 foreach。foreach&nbsp;($data['Countries']&nbsp;as&nbsp;$country) { }

慕姐4208626

您必须为Global::create()and的返回值分配一个变量Country::create()。像这样$global = Global::create(...)运行$global->save()将其存储在数据库中。编辑:根据您最新的回复,您不应该迭代数据,因为返回的数据不是数组。对于全局变量,您不需要迭代。你可以这样做:$response = $client->request('GET', 'https://api.covid19api.com/summary');$data = json_decode($response->getBody()->getContents(),true);$globals=Globas::create([&nbsp; &nbsp; 'NewConfirmed'=>$data['NewConfirmed'],&nbsp; &nbsp; 'TotalConfirmed'=>$data['TotalConfirmed'],&nbsp; &nbsp; 'NewRecovered'=>$data['NewRecovered'],&nbsp; &nbsp; 'TotalRecovered'=>$data['TotalRecovered'],&nbsp; &nbsp; 'NewDeaths'=>$data['NewDeaths'],&nbsp; &nbsp; 'TotalDeaths'=>$data['TotalDeaths']]);$globals->save();foreach($data['Countries'] as $country) {&nbsp; &nbsp; &nbsp;$country = Country::create([&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;'Country'=> $country['Country'],&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;'CountryCode'=>$country['CountryCode'],&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;'Slug'=>$country['Slug'],&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;'Date'=>$country['Date'],&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;'NewConfirmed'=>$country['NewConfirmed'],&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;'TotalConfirmed'=>$country['TotalConfirmed'],&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;'NewRecovered'=>$country['NewRecovered'],&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;'TotalRecovered'=>$country['TotalRecovered'],&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;'NewDeaths'=>$country['NewDeaths'],&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;'TotalDeaths'=>$country['TotalDeaths']&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;]);&nbsp; &nbsp; $country->save();}
打开App,查看更多内容
随时随地看视频慕课网APP