正在更新 Laravel 中的用户个人资料图片和用户个人资料

Updating user profile image along with user profile in Laravel

// Creating account
public function store()
{
 $this->validate(request(),[
 all inputs validated...
including ‘photo’ => ‘file|image|max:500’
]);
if(request()->hasFile(‘photo’)){
$path = request()->file(‘photo’)->store(‘profile’, ‘public’);
}
else{
$path = ‘avatar.jpg’;
}

$user = User::create(
[
// all inputs requested...
  including ‘photo’ => $path,
]);

// I log user in and redirect to intended destination
// Success...was able to output profile photo and other things
}


// Now Update account is my problem
public function update(Request $request, User $user-profile)
{
$this->validate($request, [
all inputs validated..
including ‘photo’ => ‘file|image|max:1500
]);

// Genesis of my problem
if (request()->hasFile(‘photo’)){
$path = request()->file(‘photo’)->store(‘profile’, ‘public’);
}
else{
// Please what should I do here....

$user-profile->update(
[
// all inputs requested...
  including ‘photo’ => ???
]);

}

更新方法的“else”条件是我的问题所在。原因:如果用户已经有个人资料照片,如果我在创建帐户时执行相同的“其他”操作,则“avatar.jpg”会覆盖他们的初始照片,这是不正确的。请问我该怎么做才能解决这个问题?因此,当用户使用照片注册时,它会被加载,否则头像会被加载。但是当用户更新时,我该怎么办?提前致谢。

与商店一样喜欢:

if (request()->hasFile(‘photo’)){
$path = request()->file(‘photo’)->store(‘profile’, ‘public’);
} else {
   $path = ‘avatar.jpg’;
}

我认为您不需要 else.. 如果用户上传了照片,那么您将需要覆盖数据库中的用户路径(您在 if 中正在做),否则您不需要和 save() 调用甚至不应该触摸 db

中的路径字段

我假设您的创建代码在您进行更新时不会以某种方式被触发。