Как я могу обновить значение запроса - PullRequest
0 голосов
/ 10 октября 2019

Я нахожусь в середине личного проекта, который будет файловым менеджером, в данный момент часть процесса переноса файла и его перемещения в пользовательский каталог работает, но часть загрузки этого "каталога"к БД не работает, это функция «store» моего контроллера.

public function store(Request $request)
{
    $request->validate([
        'path' => 'required',
        'id_class' => 'required'
    ]);

    $file = $request->path;
    $fileName = bin2hex(random_bytes(5)) . ".pdf";
    $folder = "files/" . str_pad($request['id_user'], 6, "0", STR_PAD_LEFT)
              . "/" . date("Y-m-d");
    $path = $file->storeAs(
        $folder,
        $fileName
    );
    $request = $request->merge(['path' => $path]);
    if (Presentation::create($request->all())) {
        return redirect()->route('presentation.create')
                  ->with('success', "Presentation successfully exported {$path}");
    }
}

Вы видите, что я отображаю «$ path», полученное сообщение:

"Презентация успешно экспортировала файлы / 000001 / 2019-10-09 / a1c3b14192.pdf"

, но в моей таблице на Xampp получено "D: \ xampp \ tmp \ phpBDBA.tmp".

enter image description here

Просто для возможного недостатка информации, это моя таблица:

enter image description here

Ответы [ 2 ]

2 голосов
/ 10 октября 2019

Вы можете объединить входные данные в запрос через merge, но файл все еще существует в отдельном источнике. В этом случае вы устанавливаете ввод path для вашего сохраненного пути к файлу, который вы сгенерировали, но переменная path в файлах все еще существует как объект UploadedFile. Метод all объединяет файлы с входными данными таким образом, что файлы имеют приоритет. В вашем случае, чтобы получить только входные данные (не включая файлы), вы можете позвонить input() вместо all().

Presentation::create($request->input())
0 голосов
/ 10 октября 2019

Вы не можете объединить запрос как этот. Причина, по которой вы можете найти печать запроса dd($request);

$request = $request->merge(['path' => $path]);

Вы можете попробовать вот так:

$requestData = collect($request->only(['path', 'id_class']));
// or 
// $requestData = collect($request->all());

$requestData = $requestData->merge(['path' => $path]);

Presentation::create($requestData);

Надеюсь, это поможет.

...