我想删除某些用户,如果该用户有头像,我也想删除头像。所以我确实喜欢:
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);
}
});
}
}