Как хранить данные без нескольких загрузок, если у меня нет файла для загрузки?

У меня проблема, когда я хочу сохранить новые данные, я тоже не хочу загружать файл, но мне нужно кодировать несколько загрузок в моем общедоступном хранилище функций. Я хочу добавить файл, когда я открываю форму редактирования и загружаю. что я должен делать?

Я попытался установить проверку, но когда я отправляю ошибку Неопределенная переменная: данные.

public function store(Request $request)
{
    $request->validate([
        'employee_sid' => 'required',
        'employee_npk' => 'required',
        'employee_name' => 'required',
        'file_uploads' => 'nullable',
        'file_uploads.*' => 'file|image|mimes:pdf,jpg,jpeg,png',
    ]);

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

    $sid = new Sid;
        $sid->employee_sid          = $request->employee_sid;
        $sid->employee_npk          = $request->employee_npk;
        $sid->employee_name         = $request->employee_name;
        $sid->file_uploads          = json_encode($data);
        $sid->save();

Я ожидаю, что когда я отправлю эти данные без file_uploads, они будут. но ошибка

Undefined variable: data.

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


Ответы (1)


Вы определяете переменную $data внутри if, поэтому, если условие ложно, переменная $data не будет определена. Одним из возможных исправлений может быть:

$sid = new Sid;
    $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): null;
    $sid->save();
person porloscerros Ψ    schedule 24.05.2019
comment
здорово! если это поможет решить вашу проблему, не стесняйтесь проголосовать за нее или принять ее;) - person porloscerros Ψ; 24.05.2019
comment
как насчет того, когда я хочу отредактировать этот файл? бывший. я создаю пользователя и загружаю файл, когда хочу отредактировать, я просто редактирую данные пользователя, не редактируя файл. что я должен делать ? я пробовал использовать isset($data)? json_encode($data): null при обновлении. файлы были изменены на нулевое значение в базе данных - person Christian D; 24.05.2019
comment
Ну, это было бы в функции обновления, верно? вы можете попробовать с $sid->file_uploads = isset($data)? json_encode($data): $sid->file_uploads; - person porloscerros Ψ; 24.05.2019
comment
это заменит поле в БД новыми данными или оставит его как было - person porloscerros Ψ; 24.05.2019
comment
спасибо, сэр, это работает. вы так очень полезны. Спасибо большое. могу я задать другой вопрос? как насчет поля в БД просто обновить. бывший. я хочу загрузить 5 файлов, но когда я создаю, я просто загружаю 2 файла, и когда я хочу отредактировать, я добавляю 3 файла, а общий файл составляет 5 в БД. это можно сделать? - person Christian D; 24.05.2019
comment
Что ж, это было бы немного сложнее и, возможно, не по теме этого вопроса. Я предлагаю вам задать еще один вопрос, показывающий функцию обновления и заголовок, например, как обновить поле json в базе данных? - person porloscerros Ψ; 24.05.2019