Laravel 迁移添加外键的最佳方式

标签 laravel foreign-keys migration

简单的问题:我是 Laravel 新手。我有这个迁移文件:

Schema::create('lists', function(Blueprint $table) {
    $table->increments('id'); 
    $table->string('title', 255);
    $table->integer('user_id')->unsigned(); 
    $table->foreign('user_id')->references('id')->on('users'); 
    $table->timestamps();
});

我想更新它以添加 onDelete('cascade')

最好的方法是什么?

最佳答案

首先,您必须将您的 user_id 字段设置为索引:

$table->index('user_id');

之后,您可以使用级联操作创建外键:

$table->foreign('user_id')->references('id')->on('users')->onDelete('cascade');

如果您想通过新的迁移来做到这一点,您必须首先删除索引和外键,然后从头开始执行所有操作。

在 down() 函数上,您必须执行此操作,然后在 up() 函数上执行我上面写的操作:

$table->dropForeign('lists_user_id_foreign');
$table->dropIndex('lists_user_id_index');
$table->dropColumn('user_id');

关于Laravel 迁移添加外键的最佳方式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26437342/

相关文章:

php - 如何使用 Laravel Scheduler 命令将输出重定向到 STDOUT?

php - 拉维尔 5.3 : Migrate step by step

php - 如何在两份工作之间延迟?

mysql - 简单表-错误1215 : Cannot add foreign key constraint,

php - 此路由不支持 GET 方法。支持的方法 : HEAD

ruby-on-rails - 如何在 Rails 4 中设置自定义字符串外键?

sqlite - sqlite中的外键定义

ruby-on-rails-3 - Rails 迁移使列为 null => true

mysql - DJANGO 中的模型有 4 个字段,其中两个字段给出错误 :"add a non-nullable field...."。我的问题是为什么其他两个字段没有给出错误

php - Phinx 迁移 'up' 与 'change' 函数