在 laravel 中删除有照片和没有照片的用户

Deleting a user with photo and without it in laravel

我想删除一个用户,但只有 he/she 有照片我才能删除 试图获得 属性 的非对象。我想删除任何一种方式。我的代码:

  public function destroy($id)
{
   $user = User::findOrFail($id);
  if(File::exists($user->photo->file)){
    unlink(public_path().$user->photo->file);
    $user->delete();
    Session::flash('deleted_user','The user has been deleted');
    return redirect("/admin/users");  
  }else{

    $user->delete();
    Session::flash('deleted_user','The user has been deleted');
    return redirect("/admin/users");

  }


}

如果用户没有照片,$user->photo 可能为空,因此在尝试访问 $user->photo->file 时会出现错误。为防止错误,您必须检查 $user->photo 是否为对象。

public function destroy($id)
{
    $user = User::findOrFail($id);
    if(is_object($user->photo) && File::exists($user->photo->file)){
        unlink(public_path().$user->photo->file);
        $user->delete();
        Session::flash('deleted_user','The user has been deleted');
        return redirect("/admin/users");  
    } else {
        $user->delete();
        Session::flash('deleted_user','The user has been deleted');
        return redirect("/admin/users");
    }
}

我觉得你应该先检查参数是否存在,然后用它来查找图像

public function destroy($id)
{
   $user = User::findOrFail($id);
  if(isset($user->photo->file) && File::exists($user->photo->file)){
    unlink(public_path().$user->photo->file);
    $user->delete();
    Session::flash('deleted_user','The user has been deleted');
    return redirect("/admin/users");  
  }else{

    $user->delete();
    Session::flash('deleted_user','The user has been deleted');
    return redirect("/admin/users");

  }


}