Удаление пользователя с фото и без него в laravel - PullRequest
0 голосов
/ 30 мая 2018

Я хочу удалить пользователя, но могу, только если у него / нее есть фотография, если у меня ее нет. Попытка получить свойство необъекта.Я хочу удалить в любом случае.Мой код:

  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");

  }


}

Ответы [ 2 ]

0 голосов
/ 30 мая 2018

Я думаю, вы должны сначала проверить, существует ли параметр, а затем использовать его, чтобы найти изображение

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");

  }


}
0 голосов
/ 30 мая 2018

Если у пользователя нет фотографии, $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");
    }
}
...