Вы пытались вызвать метод save для $avatar
атрибута Auth :: user () (класса), который является просто идентификатором пользователя. Ознакомьтесь с документацией здесь , если у вас возникли проблемы с пониманием того, как сохранять красноречивые модели.
Я также действительно не понимаю, что такое $face
, поскольку вы никогда не определяли эту переменную, кроме вас ' Вы пытаетесь вызвать для него метод.
Вам, вероятно, даже не нужно снова сохранять объект пользователя, поскольку вы просто обновляете изображение. Вместо этого вы можете просто сохранить файл в каталоге, соответствующем уникальному идентификатору пользователя. Что-то вроде:
if($request->hasfile('image'))
{
$file = $request->file('image');
$extension = $file->getClientOriginalExtension();
$filename = $file->getClientOriginalName();
$file->move('uploads/face/'.Auth::id().'/', $filename . $extension);
}
подойдет для первой загрузки. Для дополнительных загрузок вам нужно будет проверить, есть ли у пользователя уже аватар, затем удалить файл и заменить его новым.
Если вы хотите вместо этого сохранить имя файла как атрибут вашего пользователя в базе данных вам нужно сначала обновить свои миграции, чтобы добавить атрибут для этого имени файла. Тогда что-то вроде:
$filename;
if($request->hasfile('image'))
{
$file = $request->file('image');
$extension = $file->getClientOriginalExtension();
$filename = $file->getClientOriginalName();
$file->move('uploads/face/', $filename . $extension);
}
$user = Auth::user();
$user->avatar = $filename;
$user->save();
будет работать нормально.
Надеюсь, это поможет. Я бы порекомендовал посмотреть видеоурок для Laravel, потому что они мне очень помогли.