Laravel :: 更新外键的最佳方式

新手上路,请多包涵

我有这个迁移文件

Schema::create('table_one', function(Blueprint $table)
{
    $table->increments('id');
    $table->string('name');
    $table->integer('table_two_id')->unsigned();
    $table->foreign('table_two_id')->references('id')->on('table_two');
    $table->timestamps();
});

我想更新它 ->onDelete(‘cascade’);

 $table->foreign('table_two_id')->references('id')->on('table_two')->onDelete('cascade');

做这个的最好方式是什么?

有没有像 ->change(); 这样的东西?

谢谢

原文由 Yevgeniy Afanasyev 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 432
2 个回答

删除外键然后再次添加并运行迁移。

 public function up()
{
    Schema::table('table_one', function (Blueprint $table) {
        $table->dropForeign(['table_two_id']);

        $table->foreign('table_two_id')
            ->references('id')
            ->on('table_two')
            ->onDelete('cascade');
    });
}

原文由 Borut Flis 发布,翻译遵循 CC BY-SA 4.0 许可协议

Christopher K. 是对的,在 Laravel 文档中说:

要删除外键,您可以使用 dropForeign 方法。外键约束使用与索引相同的命名约定。因此, 我们将连接表名和约束中的列,然后在名称后缀“_foreign”

 $table->dropForeign('posts_user_id_foreign');

或者,您可以传递一个 数组 值,该值将在删除时自动使用常规约束名称:

 $table->dropForeign(['user_id']);

https://laravel.com/docs/5.7/migrations#foreign-key-constraints

原文由 Ricard 发布,翻译遵循 CC BY-SA 4.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题
logo
Stack Overflow 翻译
子站问答
访问
宣传栏