【问题标题】:Laravel 4.2 how to determine if model is soft delete or force deleteLaravel 4.2 如何判断模型是软删除还是强制删除
【发布时间】:2015-02-02 08:52:51
【问题描述】:

这是我在发票模型中的代码:

class Invoice extends Eloquent {

    protected $table = "invoice";
    protected $guarded = ["id"];
    protected $deleted_at = ['deleted_at'];

    use SoftDeletingTrait;

    public static function boot() {
        parent::boot();

        Invoice::deleted(function($invoice) {
            if($invoice->isSoftDelete()) {
                //do in case of soft delete
            } else if($invoice->isForceDelete()) {
               //do in case of force delete
            }
        });
    }
}

例如:

$invoice = Invoice::find(1);

当$invoice被删除时(可能是软删除或强制删除)

$invoice->delete();
$invoice->forceDelete();

如何在上面的函数boot()中判断$invoice是软删除还是强制删除?

【问题讨论】:

  • forceDelete() 不执行硬删除吗? IE,实际上是删除了roe。
  • @ollieread 是的,但在此之前触发了事件,因此模型仍然可用...

标签: laravel cascading-deletes soft-delete


【解决方案1】:

模型有一个属性forceDeleting。这将是truefalse

if($invoice->forceDeleting){
    //do in case of force delete
}
else {
    //do in case of soft delete
}

注意该属性仅在使用SoftDeletingTrait 时可用。所以要小心在某种基础模型中使用它。

【讨论】:

    猜你喜欢
    • 2014-09-28
    • 2014-10-19
    • 2011-05-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-05-09
    • 2014-11-06
    • 2017-07-29
    相关资源
    最近更新 更多