找不到记录时删除 Laravel 中的图像时出错
Errors when deleting images in Laravel when no record found
我想删除一些用户,如果那个用户有头像我也想删除头像。所以我喜欢这样:
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);
}
});
}
}
我想删除一些用户,如果那个用户有头像我也想删除头像。所以我喜欢这样:
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);
}
});
}
}