как обновить поле json laravel в базе данных?

Я создаю проект CRUD с файлом загрузки, используя json_encode для файла загрузки в базу данных. Я хочу спросить, как редактировать/обновлять поле json в базе данных laravel?

я пытаюсь использовать 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();

я ожидаю, что результат будет файлом, когда я загружу, добавит файл в БД. например, я загружаю 5 файлов, но когда я создаю, я просто загружаю 2 файла, и когда я хочу отредактировать, я добавляю 3 файла, а общий файл составляет 5 в БД.


person Christian D    schedule 25.05.2019    source источник


Ответы (1)


Это может решить, php в новых версиях не поддерживает создание var во время выполнения, или его проверка на наличие файлов приводит к ложному результату.

$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();
person Edilton Danniken    schedule 25.05.2019
comment
сэр. но все так же, как раньше. загрузка файлов заменит, когда я обновлю новый файл - person Christian D; 25.05.2019
comment
Какой результат условия? если($request-›файл('file_uploads')) - person Edilton Danniken; 25.05.2019
comment
Вы должны убедиться, что if($request-›file('file_uploads')) должно привести к истинному - person Edilton Danniken; 25.05.2019
comment
результат для нескольких загрузок файла. - person Christian D; 25.05.2019
comment
Попробуйте еще раз с $sid-›file_uploads = count($data)? json_encode(array_merge(json_decode($sid-›file_uploads, true),$data)): $sid-›file_uploads; - person Edilton Danniken; 25.05.2019
comment
Могу я задать другой вопрос, сэр? - person Christian D; 25.05.2019
comment
Да, но сделать в новом посте - person Edilton Danniken; 25.05.2019
comment
сэр, пожалуйста, помогите. я делаю новый пост, как показать поле json laravel в лезвии просмотра и отредактировать файл нескольких загрузок json_encode? - person Christian D; 25.05.2019