首页 > 解决方案 > Laravel 将 JSON 数据 API 存储到数据库

问题描述

我从 API 获得了数据 json,我想将它们存储到我的数据库中。

数据 json 样本:

{
    "success": true,
    "data": [
        {
            "status_employee_id": "1",
            "name": "Manager"
        },
        {
            "status_employee_id": "2",
            "name": "Staff"
        },
        {
            "status_employee_id": "3",
            "name": "OB"
        },
        {
            "status_employee_id": "4",
            "name": "Fired"
        },
        {
            "status_employee_id": "5",
            "name": "Retired"
        }
    ]
}

我的模型

class StatusEmployee extends Model
{
    use HasFactory;
    protected $table = 'status_employee';
    protected $fillable = [
       'status_employee_id','name'
    ];
    public $timestamps = false;

}

我试过在我的控制器中使用它

public function store()
    {
        $client = new \GuzzleHttp\Client();
        $res = $client->request('GET', 'http://xx.xx.xx.xx/tools/public/get_status_employee');
        $datas = json_decode($res->getBody(), true);
        foreach($datas as $data){
            StatusEmployee::create([
                'status_employee_id' => $data->status_employee_id,
                'name' => $data->name,
            ]);
        }


    }

我想将数据 json 样本存储到我的表 status_employee 中。怎么做?

标签: laravelapirestlaravel-8

解决方案


很简单,Laravel Eloquent 会为你做一切。

// If json is in string decode first
$data = json_decode($res->getBody(), true); // to array

// Eloquent approach
StatusEmployee::insert(@$data['data']); 

推荐阅读