首页 > 解决方案 > 如何将所有json文件数据插入数据库?

问题描述

我有 JSON 文件,里面有数据。我想通过数据库播种器导入数据库中的所有数据。我收到一个错误Trying to get property name of non-object。我有多个数据如何插入数据库?

public function run()
{
    $json = File::get("public/kmz/WASASubdivisions.geojson");
    $data = json_decode($json);
 //        dd($data);
    foreach ($data as $obj){
        Regions::create(array(
            'name' => $obj[0]->Name,
            'description' => $obj[0]->description,
            'altitudeMode' => $obj[0]->altitudeMode,
            'Town' => $obj[0]->Town,
            'AC' => $obj[0]->AC,
            'No_of_TW' => $obj[0]->No_of_TW,
            'No' => $obj[0]->No,
            'DC'=> $obj[0]->DC,
            'HH_2017' => $obj[0]->HH_2017,
            'FID' => $obj[0]->FID,
            'Area_ha' => $obj[0]->Area_ha,
            'Field_1' => $obj[0]->Field_1,
            'Pop_Dens' => $obj[0]->Pop_Dens,
            'Id' => $obj[0]->Id,
            'Pop_2017' => $obj[0]->Pop_2017,
            'Area_Sq'=> $obj[0]->Area_Sq,
        ));
    }
}

示例 Json 格式

31 => {#837
  +"type": "Feature"
  +"properties": {#838
    +"Name": "Gujjar Pura"
    +"description": null
    +"altitudeMode": "clampToGround"
    +"Town": "Shalimar Town"
    +"AC": "31"
    +"No_of_TW": "11"
    +"No": "13"
    +"DC": "38"
    +"HH_2017": "30478"
    +"FID": "31"
    +"Area_ha": "648.327"
    +"Field_1": "Gujjar Pura"
    +"Pop_Dens": "54063.141167"
    +"Id": "0"
    +"Pop_2017": "196619"
    +"Area_Sq": "3.63684"
  }
  +"geometry": {#839
    +"type": "MultiPolygon"
    +"coordinates": array:1 [
      0 => array:1 [
        0 => array:169 [ …169]
      ]
    ]
  }
}

标签: laravel

解决方案


属性在properties键下,但您是从对象的根目录引用它们。例如$obj[0]->Name应该是$obj[0]->properties->Name等。


推荐阅读