【问题标题】:how to update a json field laravel in the database?如何更新数据库中的 json 字段 laravel?
【发布时间】:2019-10-11 12:47:09
【问题描述】:

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

我尝试使用 isset($data)? json_encode($data): $sid->file_uploads in public function 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();

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

【问题讨论】:

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


    【解决方案1】:

    这可以解决,新版本的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();
    

    【讨论】:

    • 先生。但还是和以前一样。当我更新新文件时,文件上传将替换
    • 条件的结果是什么? if($request->file('file_uploads'))
    • 您已确保 if($request->file('file_uploads')) 应为 true
    • 结果是多个上传文件。
    • 使用 $sid->file_uploads = count($data) 再试一次? json_encode(array_merge(json_decode($sid->file_uploads, true),$data)): $sid->file_uploads;
    猜你喜欢
    • 2014-08-19
    • 1970-01-01
    • 2019-12-04
    • 2020-04-07
    • 2019-05-31
    • 2017-09-04
    • 2018-08-26
    • 2018-12-11
    • 2022-11-02
    相关资源
    最近更新 更多