向现有迁移添加级联/删除功能

时间:2019-07-12 12:06:03

标签: php laravel laravel-5 eloquent cascade

我的tables中有2个database。一个用于Courses,另一个用于Course Chapters

migration的{​​{1}}看起来像这样:

courses

Schema::create('courses', function (Blueprint $table) { $table->bigIncrements('id'); $table->timestamps(); }); 的{​​{1}}看起来像这样:

migration

我希望课程和本章为chapters,所以当我删除Schema::create('course_chapters', function (Blueprint $table) { $table->bigIncrements('id'); $table->unsignedInteger('course_id'); $table->timestamps(); }); 时,cascade down也将被删除。

我看到一些使用删除course的示例,但我从未以chapter的身份签名。

例如,通常我可以:

foreign key

如何在(最好是)foreign key中完成此操作,并在$table->dropForeign('course_id'); $table->foreign('course_id') ->references('id')->on('courses') ->onDelete('cascade'); 上添加new migration的内容?

1 个答案:

答案 0 :(得分:1)

这应该是在您的course_chapters桌上:

$table->foreign('course_id')->references('id')->on('courses')->onDelete('cascade');

您不需要添加$table->dropForeign('course_id');,因为这将从列中删除外键。

注意:以及:

$table->unsignedInteger('course_id');

应该是这样

$table->unsignedBigInteger('course_id');

因为它将引发使用不同数据类型的错误。