加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 站长学院 > PHP教程 > 正文

php – 如何在模型事件中检测强制删除

发布时间:2020-12-13 17:48:58 所属栏目:PHP教程 来源:网络整理
导读:我已经设置了一个模型事件来检查图像何时被删除并删除相关的image_size模型条目.但是图像使用软删除,所以如果它被软删除,那么我想软删除image_size记录,但如果使用forceDelete硬删除图像,那么我想硬删除image_size记录.有没有办法检测它是什么类型的删除并采
我已经设置了一个模型事件来检查图像何时被删除并删除相关的image_size模型条目.但是图像使用软删除,所以如果它被软删除,那么我想软删除image_size记录,但如果使用forceDelete硬删除图像,那么我想硬删除image_size记录.有没有办法检测它是什么类型的删除并采取相应的行动.这是我目前在我的 Image模型中所拥有的:

<?php

namespace App;

use IlluminateDatabaseEloquentModel;
use IlluminateDatabaseEloquentSoftDeletes;

class Image extends Model
{
    use SoftDeletes;

    /**
     * The attributes that are mass assignable.
     *
     * @var array
     */
    protected $fillable = ['url','thumb_url','filename'];

    /**
     * Relationship to image sizes
     */
    public function sizes()
    {
        return $this->hasMany('AppImage_size');
    }

    /**
    * Model events
    */
    protected static function boot() {
        parent::boot();

        static::deleting(function($image) { // before delete() method call this
             $image->sizes()->delete();
        });
    }
}

解决方法

如果我没记错的话,你在$image对象上有一个名为forceDeleting的属性.

static::deleting(function($image) { 
    if($image->forceDeleting){
        //do in case of force delete
    } else {
        //do in case of soft delete
    }
});

但是我认为上次我这样做是在几个版本中,所以不确定它是否仍然有效.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读