2015-02-02 4 views
1

Это мой код в модели счета-фактуры:Laravel 4.2 как определить, если модель является мягкое удаление или сила удаления

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->delete(); 
$invoice->forceDelete(); 

Как определить в ботинке функции() выше $ фактуры мягким удален или сил удалены?

+0

Не 'forceDelete()' выполнять жесткое удаление? IE, фактически удаляет икру. – ollieread

+0

@ollieread Да, но событие уволено до того, как это произойдет, поэтому модель все еще доступна ... – lukasgeiter

ответ

3

Модель имеет свойство forceDeleting. Какой будет либо true или false:

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

Примечание, что это свойство доступно только при использовании SoftDeletingTrait. Поэтому будьте осторожны, чтобы использовать это в какой-то базовой модели.

+1

Спасибо, лукасгейтер. Он работает нормально. Я протестировал. –