когда я пробую делать update моего профиля пользователя, специально в части аватара, когда поверит пользователь, нет никакой проблемы, но сделав update, сохраняет это мне таким образом /private/var/tmp/phpkvpriG
сделав один dd
или return
, он показывает мне правильно маршрут public/uxxs4f8ufQEzTOguMMzigwHOdR6HtGvIiq8AeGNb.png
, в моем драйвере у меня это есть таким образом метод update
public function update(UpdateUserRequest $request, $id)
{
// return $request->file('avatar')->store('public');
$user = User::findOrFail($id);
$this->authorize($user);
if ($request->hasFile('avatar'))
{
$user->avatar = $request->file('avatar')->store('public');
}
$user->update($request->all());
$user->roles()->sync($request->roles);
return back()->with('info', 'Usuario Actualizado');
}
Проблема, которую я вижу, состоит в том, что в этой lГ-nea ты распределяешь ему стоимость маршрута в файл в признак аватар, но это не сохраняешь:
$user->avatar = $request->file('avatar')->store('public');
и хотя ты это сохранял ahГ, - потом это sobreescrbirГ-схвати в этой другой lГ-nea
$user->update($request->all());
, так как ты используешь данные request, не имея новой информации о маршруте в виду.
Есть несколько способов это предотвращать, простая одна может быть сохраняя данные request в переменной, и распределять стоимость маршрута файла в элемент соответствующего array в этой переменной, и в конце концов использовать данные о переменной, чтобы обновлять BD:
$data = $request->all();
$data['avatar'] = $request->file('avatar')->store('public');
$user->update($data);
Совсем mГ©todo:
public function update(UpdateUserRequest $request, $id)
{
$user = User::findOrFail($id);
$this->authorize($user);
$data = $request->all();
if ($request->hasFile('avatar'))
$data['avatar'] = $request->file('avatar')->store('public');
$user->update($data);
$user->roles()->sync($request->roles);
return back()->with('info', 'Usuario Actualizado');
}