1

我想删除一些用户,如果该用户有头像,我也想删除头像。所以我喜欢这样:

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"

那么是什么让我得到这个错误,我该如何解决它。谢谢。

4

1 回答 1

2

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

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);
            }
        });
    }
}
于 2017-12-02T04:25:24.807 回答