gpt4 book ai didi

php - 拉维尔 : same table relationship error

转载 作者:行者123 更新时间:2023-11-29 07:36:58 25 4
gpt4 key购买 nike

我正在使用 JSTree 开发目录层次结构。

我正在设置数据库列和与架构生成器的关系。这就是我所拥有的。

 Schema::create('directories', function (Blueprint $table) {
$table->increments('id');
$table->string('name');
$table->string('text');
$table->integer('parent_id')->default(0)->unsigned();
$table->foreign('parent_id')->references('id')->on('directories')->onUpdate('cascade')->onDelete('cascade');
$table->timestamps();

});

在迁移过程中我没有收到任何错误,但是当我尝试插入记录时出现错误提示

SQLSTATE[23000]:违反完整性约束:1452 无法添加或更新子行:外键约束失败('dms'。'directories',CONSTRAINT 'directories_parent_id_foreign' FOREIGN KEY('parent_id')引用'directories' ('id') ON DELETE CASCADE ON UPDATE CASCADE) (SQL: insert into 'directories' ('name', 'text', 'parent_id', 'updated_at', 'created_at') values (Project, Project, 0, 2018-01-20 12:50:37, 2018-01-20 12:50:37))

这有什么问题。谢谢

最佳答案

您不能将外键设置0,而是从目录提供一个真实的id作为parent_id > 或者您可以将架构更改为以下以允许 null 作为 parent_id

Schema::create('directories', function (Blueprint $table) {
$table->increments('id');
$table->string('name');
$table->string('text');
$table->integer('parent_id')->nullable()->unsigned();
$table->foreign('parent_id')->references('id')->on('directories')->onUpdate('cascade')->onDelete('cascade');
$table->timestamps();

});

并且在您的insert 方法中,您可以跳过parent_id 或设置为null

关于php - 拉维尔 : same table relationship error,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48356371/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com