laravel - 当模型在 Laravel 中作为关系删除时,观察者删除不起作用
问题描述
我有 2 个模型:Project > Planning 我有一个 PlanningObserver,当删除 Planning 时,我想在其中删除存储中的文件夹。如果我删除计划本身,它可以正常工作。但是,当我删除删除计划的项目时,该文件夹不会被删除。
规划观察员:
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()
.
原来的:
您需要注册您的观察员。boot
您可以在 的方法上注册它App\Providers\EventServiceProvider
。
/**
* Register any events for your application.
*
* @return void
*/
public function boot()
{
User::observe(UserObserver::class);
}
推荐阅读
- javascript - 没有值的返回类似于 Javascript 中的中断吗?
- javascript - TypeScript:它的返回类型'Element | undefined' 不是有效的 JSX 元素
- c++ - C++:wntdll.pdb 在使用运算符进行类销毁时未正确加载
- nginx - 如何为除某些文件之外的所有文件显示错误 404
- scala - 从 JsonRequest 将 DateTime 修剪为毫秒
- macos - 致命的:需要对自制软件进行一次修订
- elasticsearch - Elasticsearch 有主分片未激活,返回 org.elasticsearch.action.UnavailableShardsException
- visual-studio-code - 在 VSCode 中使用远程 SSH 时“必须连接到终端”
- reactjs - 在 gh-pages 上托管多页反应应用程序时出现 404 错误
- digital-signature - PdfSharp 撰写带有两个数字签名的 pdf