在Laravel中将模型作为关系删除时,删除的观察者不工作
我有两个模型:项目>计划 我有一个PlanningObserver,当计划被删除时,我想从存储中删除文件夹。如果我删除一个计划本身,它就可以正常工作。 但是,当我删除项目(即删除规划)时,文件夹不会被删除 规划观察员:在Laravel中将模型作为关系删除时,删除的观察者不工作,laravel,laravel-8,Laravel,Laravel 8,我有两个模型:项目>计划 我有一个PlanningObserver,当计划被删除时,我想从存储中删除文件夹。如果我删除一个计划本身,它就可以正常工作。 但是,当我删除项目(即删除规划)时,文件夹不会被删除 规划观察员: public function deleted(Planning $planning) { $this->deleteDialuxData($planning); } private function deleteDialuxDat
public function deleted(Planning $planning)
{
$this->deleteDialuxData($planning);
}
private function deleteDialuxData(Planning $planning) {
$directory_path = $planning->user_id . '/' . $planning->custom_planning_id . '/';
Storage::disk('dialux')->deleteDirectory($directory_path);
}
项目控制器:
public function destroy(Project $project)
{
if (auth()->user()->id !== $project->user_id) {
return response()->json(['message' => 'Kein Zugriff'], 403);
}
$project->plannings()->delete();
$project->delete();
return response()->noContent();
}
有什么问题吗?编辑:
我误读了密码<代码>$project->plannings()->delete()不会触发任何模型事件。如果您想删除所有计划并仍然触发事件,可以这样做:$project->plannings()->get()->each->delete()
原件:
你需要注册你的观察员。您可以在App\Providers\EventServiceProvider
的boot
方法中注册它
/**
* Register any events for your application.
*
* @return void
*/
public function boot()
{
User::observe(UserObserver::class);
}
非常感谢你!那太好了!