Avatar ·

如何通过迁移在 Laravel 中向现有表添加新字段?

大家好!我是 Laravel(版本 10)的新手,一直搞不懂迁移。情况是这样的:我已经有一个现成的 users 表,它是在安装 Laravel 时通过标准迁移创建的。现在我需要向其中添加一个新字段 phone(string 类型,可选)。

我尝试直接编辑现有的迁移文件 create_users_table.php,并在其中添加新列,但运行 php artisan migrate 后没有任何反应——显示 "Nothing to migrate"。我明白不能这样做,因为迁移已经执行过了。

于是我通过 Artisan 创建了一个新的迁移:

php artisan make:migration add_phone_to_users_table

得到了文件 2024_01_15_123456_add_phone_to_users_table.php。我打开它并在 up() 方法中写了:

public function up()
{
    Schema::table('users', function (Blueprint $table) {
        $table->string('phone')->nullable();
    });
}

然后运行 php artisan migrate,这次成功了!字段添加到了表中。但我不确定这是否正确,或者是否有更好的做法。另外,如果我想回滚这个更改,down() 方法应该怎么写?

请指教,谢谢!