Php 未触发Laravel模型删除方法
我有一个Php 未触发Laravel模型删除方法,php,laravel,model,eloquent,Php,Laravel,Model,Eloquent,我有一个消息模型和一个反应模型。因此,当我删除一条消息时,所有文件都应该被删除 但是我的反应模型中的删除方法没有被触发 在我的信息中型号: public function delete() { $this->reactions()->delete(); return parent::delete(); } public function delete() { $files = $this->files; foreach ($files as $fi
消息
模型和一个反应
模型。因此,当我删除一条消息时,所有文件都应该被删除
但是我的反应模型中的删除方法没有被触发
在我的信息中
型号:
public function delete()
{
$this->reactions()->delete();
return parent::delete();
}
public function delete()
{
$files = $this->files;
foreach ($files as $file)
{
$this->destroyFile($file);
}
return parent::delete();
}
在我的反应
模型中:
public function delete()
{
$this->reactions()->delete();
return parent::delete();
}
public function delete()
{
$files = $this->files;
foreach ($files as $file)
{
$this->destroyFile($file);
}
return parent::delete();
}
所以当我dd('test')代码>它永远不会到达该方法。您是否可以在迁移中执行此操作,即,反应是否具有引用消息上id的外键?@craig_h我的文件表正在使用变形关系。所以它只与一个用户(外键)关联。好的,这就解释了为什么不能使用级联。你真的应该把你的删除方法放在你的MessagesController里,而不是你的模型里,然后你就可以一次完成这个动作了。我认为在模型上用delete
方法可以做到这一点。然后每次删除一个反应时,所有文件都会被删除。我认为您需要的是一个有说服力的事件,它允许您在模型上收听事件:您是否可以在迁移中这样做,例如,反应是否有引用消息id的外键?@craig_h我的文件表正在使用变形关系。所以它只与一个用户(外键)关联。好的,这就解释了为什么不能使用级联。你真的应该把你的删除方法放在你的MessagesController里,而不是你的模型里,然后你就可以一次完成这个动作了。我认为在模型上用delete
方法可以做到这一点。然后每次删除反应时,所有文件都会被删除。我认为您需要的是一个雄辩的事件
,它允许您收听模型上的事件: