php - 如何检测模型事件中的强制删除

标签 php laravel laravel-5

我已经设置了一个模型事件来检查图像何时被删除并删除相关的 image_size 模型条目。然而,图像使用软删除,所以如果它被软删除,那么我想软删除 image_size 记录,但如果使用 forceDelete 硬删除图像,那么我想硬删除 image_size 记录。有没有办法检测它是什么类型的删除并采取相应的行动。到目前为止,这是我的图像模型中的内容:

<?php

namespace App;

use Illuminate\Database\Eloquent\Model;
use Illuminate\Database\Eloquent\SoftDeletes;

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('App\Image_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
    }
});

不过我想我上次这样做是在几个版本之前,所以不确定它是否仍然有效。

关于php - 如何检测模型事件中的强制删除,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31295029/

相关文章:

php - 调用 mysql_insert_id() 在 drupal 中不起作用

laravel-5 - RefreshDatabase 非常慢

laravel - 将 Laravel Route::any 转换为 Lumen Route

laravel - Request::getQueryString() 不带一些参数

php - 调用非对象上的成员函数 where() ?拉拉维尔 5.2

java - 在 PHP 中复制 Java 的 getTime()

php - 如何通过语言环境字符串获取日历类型

php - 如果记录相同则更新 SQL 行

html - 如何在 Laravel Blade 模板中添加输入类型 ="number"?

mysql - Laravel - 在现有表上添加外键数据