我想删除一些用户,如果该用户有头像,我想删除头像。所以我喜欢这个:
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"
所以是什么让我得到这个错误,我该如何解决它。感谢。
答案 0 :(得分: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);
}
});
}
}