如何将JSON文件导入数据库

时间:2017-11-23 04:32:22

标签: php json laravel

我在文件夹database\data\countries.json中有json文件,我有 CountriesTableSeeder.php

我想将 countries.json 中的所有数据播种到我的国家/地区。但它发生错误Trying to get property of non-object

我已按照我找到的步骤进行操作,但仍然出现错误。

这是我的模特:

protected $fillable = ['country_name', 'iso_code'];

这是我的播种机代码:

public function run()
{
  $countryJson = File::get("database/data/countries.json");
  $data = json_decode($countryJson, true);
  foreach ($data as $obj) {
    Country::create(array(
      'country_name' => $obj->name, 'iso_code' => $obj->sortname
    ));
  }
}

1 个答案:

答案 0 :(得分:2)

你需要在foreach中传递相同的变量,同时通过检查dd($ data)确保你有name元素;并且您需要通过$ obj [' name']而不是$ obj->名称获取数组元素,因为它不是对象。

$data = json_decode($countryJson, true);
        foreach ($data['countries'] as $obj) {
            Country::create(array(
              'country_name' => $obj['name'], 'iso_code' => $obj['sortname']
              ));
        }