如何更新数据库中的json字段laravel?

时间:2019-05-25 00:12:26

标签: php mysql laravel laravel-5.7 laravel-5.8

我正在使用json_encode使用数据库中的上传文件创建带有上传文件的项目CRUD。我想问一下如何在数据库laravel中编辑/更新json字段?

我尝试使用isset($ data)吗? json_encode($ data):$ sid-> file_uploads在公共函数update()中,但是当我更新时该代码可以替换先前的文件。

    $sid = Sid::find($id);

    if($request->file('file_uploads'))
    {
        foreach($request->file('file_uploads') as $file)
        {
            $name = $file->getClientOriginalName();
            $path = 'public/file/'.$sid->employee_name;
            $file->move($path, $name);
            $data[] = $name;
        }
    }

        $sid->employee_sid          = $request->employee_sid;
        $sid->employee_npk          = $request->employee_npk;
        $sid->employee_name         = $request->employee_name;
        $sid->file_uploads          = isset($data)? json_encode($data): $sid->file_uploads;
        $sid->save();

我希望结果是文件,当我上传时会在DB中添加文件。例如,我上载5个文件,但是当我创建时,我只上载2个文件,当我要编辑时,我添加3个文件,DB中的总数为5。

1 个答案:

答案 0 :(得分:0)

这可以解决,新版本的php不支持在运行时创建var,或者它是否检查是否包含文件会导致false。

$sid = Sid::find($id);
$data = [];

if($request->file('file_uploads'))
{
    foreach($request->file('file_uploads') as $file)
    {
        $name = $file->getClientOriginalName();
        $path = 'public/file/'.$sid->employee_name;
        $file->move($path, $name);
        $data[] = $name;
    }
}

    $sid->employee_sid          = $request->employee_sid;
    $sid->employee_npk          = $request->employee_npk;
    $sid->employee_name         = $request->employee_name;
    $sid->file_uploads          = count($data)? json_encode(array_merge(json_decode($sid->file_uploads, true),$data)): $sid->file_uploads;
    $sid->save();