当找不到记录时,在Laravel中删除图像时出错



我想删除某些用户,如果该用户有头像,我也想删除头像。所以我确实喜欢:

public function destroy($id)
    {
        $user = User::findOrFail($id);
        if ($user && $user->profile->avatar){
            Storage::delete($user->profile->avatar);
        }
        User::destroy($id);
        return back();
    }

但是,当我这样做时,当用户没有任何记录中的记录时,就会给我一个错误:

"Trying to get property of non-object"

那么,什么让我遇到此错误,以及我该如何解决。谢谢。

您需要检查用户是否有个人资料,首先。

if ($user && $user->profile && $user->profile->avatar){
    Storage::delete($user->profile->avatar);
}

无论如何,在模型级别执行此操作将使您的控制器变得更加清洁。直接通过模型附加侦听器的示例。

class User extends Model
{
    protected static function boot()
    {
        parent::boot();
        static::deleting(function ($instance) {
            if ($instance->profile && $instance->profile->avatar) {
                Storage::delete($instance->profile->avatar);
            }
        });
    }
}

相关内容

  • 没有找到相关文章

最新更新