Laravel如何强制删除所有与父级相关的模型?
我试图用一个关系强制删除模型。我在模型中为它做了一个自定义函数Laravel如何强制删除所有与父级相关的模型?,laravel,Laravel,我试图用一个关系强制删除模型。我在模型中为它做了一个自定义函数 /** * Force delete active ingredient with relationships * @return bool|null * @throws \Exception */ public function bruteDelete() { $this->brandPresentations()->forceDelete
/**
* 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
。但它会软删除父级,即活性成分
我尝试使用forceDelete()作为函数名来覆盖Laravel方法,但它给出了相同的结果。
如何强制删除这两个模型 您可以在
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();
我希望它能起作用:)我建议在迁移时使用cascade on delete
$table->foreign('model_id')->引用('id')->on('models')->onDelete('cascade')代码>
通过调用$item->forceDelete()
也将删除其所有相关外键。
我很确定这对软删除不起作用。您是否使用了$this->forceDelete()
而不是parent::forceDelete()
?@OluwatobiSamuelOmisakin尝试了这两种方法。我真的想知道为什么不起作用work@MrCarrot我还是不知道为什么这不起作用,但答案中的方法非常有效!:)