【发布时间】:2015-12-15 11:32:38
【问题描述】:
我正在构建一些东西,允许用户上传他们的图形作品,而其他用户可以在项目上进行 cmet 并像其他项目一样。
现在,当用户想要删除他们自己的项目时,它可以工作,但只要项目有 cmets 或 like,我就会收到此错误:
Integrity constraint violation: 1451
Cannot delete or update a parent row: a foreign key constraint fails
(`scotchbox`.`comments`, CONSTRAINT `comments_on_projects_foreign` FOREIGN KEY (`on_projects`)
REFERENCES `projects` (`id`)) (SQL: delete from `projects`
where `id` = 31 and `user_id` = 32)
我认为这可以通过从 cmets 表中删除 cmets 以及从 likes 表中删除来解决?但老实说,我不知道如何用外键解决这个问题。
我认为在删除项目本身之前,我需要一种方法来删除项目的 cmets 和 likes。这可能来自我的 ProjectsController 的破坏功能吗?
这是我删除项目的销毁函数:
public function destroy($id)
{
$input = Request::all();
Project::whereId($id)->whereUserId(Auth::user()->id)->delete();
return redirect('projects/');
}
【问题讨论】: