2016-07-30 3 views
0

JSONをAPI呼び出しから別のLaravel Webサイトに変換して、雄弁なモデルにして、ローカルWebサーバーにデータを保存しようとしています。マスターサーバーから要求されたJSONを雄弁な保存メソッドに変換する際に問題が発生しました。ここに私が持っている現在のコードです。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" 
} 

配列$データからデータダンプは、誰もがJSONレスポンスを得るために自分自身のためのAPIを試してみたい場合は、単にhttp://new.fsvaos.net/api/central/airports?icao=[AIRPORT ICAOにGETを行う

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" 
    ] 
] 

もある]とあなたは世界中の空港データを取得します。

+0

問題は、json_decodeの2番目のパラメータとしてTRUEを渡して、配列を必要としていて、プロパティをオブジェクトとして参照していることを示していることです。 $ data ['field']として参照してみてください。 JSONレスポンスをdd()して質問に追加する必要もあります。 JSONレスポンスがどのようなものかわからない場合は、あなたを助けることはできません。 –

+0

あなたのリクエストを反映するためにOPを編集しました。私も$ data ['field']を実行しようとしましたが、私はそのようなことから未知のエラーを受け取ります。 –

答えて

0

出力を追加したので、これは明らかです。オブジェクトではなくサブ配列を持つ配列があります。

$airport->id = $data[0]['id']; 
$airport->name = $data[0]['name']; 
$airport->icao = $data[0]['icao']; 
$airport->lat = $data[0]['lat']; 
$airport->lng = $data[0]['lon']; 
$airport->hub = 0; 
$airport->fuelprice = 0; 

$airport->save(); 
関連する問題