数组到字符串转换 - Laravel 5.6错误

时间:2018-04-02 15:12:54

标签: php json laravel laravel-5

我正在尝试使用JSON文件中的值更新数据库中的值:

代码:

$jsonData = file_get_contents($jsonFile);
        $data = json_decode($jsonData, true);

        //check if hospital exist
        $name = explode(' ',trim($data['organisationUnits']['organisationUnit']['name']));
        // echo $name[0];
        $query = Hospital::where('h_name',  'LIKE' , '%' . $data['organisationUnits']['organisationUnit']['name'] . '%')->first();

        if($query){

            // echo "\n yupo";
            $h_id = $query->id;
            $h_slug = $query->h_slug;
            $nr_orgUnit = $query->nr_orgUnit;

            // echo $nr_orgUnit;
            $updateHospital = Hospital::find($h_id);
            $updateHospital->h_name = $data["organisationUnits"]["organisationUnit"]["name"];
            $updateHospital->h_short_name = $data["organisationUnits"]["organisationUnit"]["shortName"];
            $updateHospital->h_code = $data["organisationUnits"]["organisationUnit"]["code"];
            $updateHospital->h_opening_date = $data["organisationUnits"]["organisationUnit"]["openingDate"];
            $updateHospital->h_closed_date = $data["organisationUnits"]["organisationUnit"]["closedDate"];
            $updateHospital->h_active = $data["organisationUnits"]["organisationUnit"]["active"];
            $updateHospital->h_comment = $data["organisationUnits"]["organisationUnit"]["comment"];
            $updateHospital->h_geo_code = $data["organisationUnits"]["organisationUnit"]["geoCode"];
            $updateHospital->h_last_updated = $data["organisationUnits"]["organisationUnit"]["lastUpdated"];
            $updateHospital->save();
} else {
            // echo 'error';
        }

JSON DATA:

 {"organisationUnits":{
  "organisationUnit":{
     "id":"01",
     "uuid":{

     },
     "name":"Isagehe Dispensary",
     "shortName":"Isagehe Dispensary ",
     "code":"17-04-0118",
     "openingDate":"1990-01-01",
     "closedDate":{

     },
     "active":"true",
     "comment":{

     },
     "geoCode":{

     },
     "lastUpdated":{

     }
  }
}
}

当我尝试运行代码时,我收到以下错误:

  

数组到字符串转换(SQL:更新`ag_hospitals`设置`h_closed_date` =,`h_active` = true,`h_comment` =,`h_geo_code` =,`h_last_updated` = where`id` = 41)&#34 ;

我可能在哪里错?

注意我也尝试过以下方式更新:

$updateHospital = Hospital::where('id', $h_id)->update([
                                'h_name' => $data['organisationUnits']['organisationUnit']['name'], 
                                'h_short_name' => $data['organisationUnits']['organisationUnit']['shortName'], 
                                'h_code' => $data['organisationUnits']['organisationUnit']['code'], 
                                'h_opening_date' => $data['organisationUnits']['organisationUnit']['openingDate'], 
                                'h_closed_date' => $data['organisationUnits']['organisationUnit']['closedDate'], 
                                'h_active' => $data['organisationUnits']['organisationUnit']['active'], 
                                'h_comment' => $data['organisationUnits']['organisationUnit']['comment'], 
                                'h_geo_code' => $data['organisationUnits']['organisationUnit']['geoCode'], 
                                'h_last_updated' => $data['organisationUnits']['organisationUnit']['lastUpdated']
                            ]);

1 个答案:

答案 0 :(得分:0)

您需要在Model中定义将该JSON数据存储为Array的属性。 示例:

protected $casts = [
        'column_name' => 'array'
    ];