如何解决Laravel 7.x-自反关系-即使有适当的约束,也无法删除或更新父行
你好,
我有一个代表文件夹的表,引用了父文件夹的“编号”(!= ID)。这是一个名为“文件夹”的表上的自反关系。
ID为1、2、3、4 ...,并且不能进行编辑。
“ folder_number”列包含“ 2048759”,“ 5789516”之类的值,并且可以由管理员进行编辑。
示例: 文件夹可以有一个父文件夹。 (一) 文件夹可以具有子文件夹(0或一个或多个) 文件夹的“ parent_folder_number”列中具有其父文件夹的编号。
我要
:当用户(管理员)更新文件夹上的“ folder_number”时,我希望所有子文件夹都更新其“ parent_folder_number”字段。
但是(t):
更新父行时,我遇到了FK约束问题。
所以这是我创建表的迁移:
Schema::create('folders',function (Blueprint $table)
{
[...]
$table->id();
$table->bigInteger('folder_number')
->unsigned()
->index()
->onDelete('SET NULL')
->onUpdate('CASCADE');
$table->bigInteger('parent_folder_number')
->unsigned()
->nullable();
[...]
});
Schema::table('folders',function(Blueprint $table)
{
[...]
$table->foreign('parent_folder_number')
->onDelete('SET NULL')
->onUpdate('CASCADE')
->references('folder_number')->on('folders');
[...]
});
一切正常,但是当我将父文件夹添加到文件夹然后想要更改该父文件夹的编号时,会发生这种情况:
sqlSTATE[23000]: Integrity constraint violation: 1451 Cannot delete or update a parent row: a foreign key constraint fails (`db`.`folders`,CONSTRAINT `folders_parent_folder_number_foreign` FOREIGN KEY (`parent_folder_number`) REFERENCES `folders` (`number`) ON DELETE SET NULL ON UPDATE CASCADE) (sql: update `folders` set `number` = 1 where `id` = 9)
有人可以帮我弄清楚吗?谢谢:D
解决方法
我尝试重新阅读文档并进行一些修复,但仍然遇到问题。
如果某人的解决方案不包括做数据透视表,那么我很感兴趣!
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。