我有两个模型:Project>规划我有一个PlanningObserver,当删除规划时,我想从存储中删除文件夹。如果我删除一个计划本身,它可以毫无问题地工作。然而,当我删除项目时,它删除了计划,那么文件夹就不会被删除。
规划观察员:
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()
。
原件:
你需要注册你的观察员。您可以在AppProvidersEventServiceProvider
的boot
方法上注册它。
/**
* Register any events for your application.
*
* @return void
*/
public function boot()
{
User::observe(UserObserver::class);
}