我正在尝试通过一种关系强制删除模型。我在模型中为此做了一个自定义功能。
/**
* Force delete active ingredient with relationships
* @return bool|null
* @throws \Exception
*/
public function bruteDelete()
{
$this->brandPresentations()->forceDelete();
return parent::forceDelete();
}
这就是我调用该函数的方式
Active_ingredients::withTrashed()->find($request->get('elementID'))->bruteDelete();
哪个力量可以完美删除brandPresentations
。但是它会软删除父级active_ingredients
。
我试图使用forceDelete()作为函数名来覆盖Laravel方法,但是它给了我相同的结果。 如何强制删除两个模型?
答案 0 :(得分:2)
您可以像这样在boot
方法中使用它。
protected static function boot()
{
parent::boot();
self::deleting(function (User $model) {
if ($model->forceDeleting){
$model->brandPresentations()->forceDelete();
}
});
}
然后运行forceDelete
Active_ingredients::withTrashed()->find($request->get('elementID'))->forceDelete();
我希望它能起作用:)
答案 1 :(得分:0)
我建议您在迁移中使用级联删除
$table->foreign('model_id')->references('id')->on('models')->onDelete('cascade');
通过调用$item->forceDelete()
,其所有相关外键也将被删除。
我很确定这不适用于软删除。