Laravel 在迁移中向现有表添加新列

2022-08-30 05:53:33

我无法弄清楚如何使用Laravel框架将新列添加到我现有的数据库表中。

我尝试使用...

<?php

public function up()
{
    Schema::create('users', function ($table) {
        $table->integer("paid");
    });
}

在终端中,我执行 和 。php artisan migrate:installmigrate

如何添加新列?


答案 1

要创建迁移,您可以使用 Artisan CLI 上的 migrate:make 命令。使用特定名称以避免与现有模型冲突

对于Laravel 5+:

php artisan make:migration add_paid_to_users_table --table=users

对于Laravel 3:

php artisan migrate:make add_paid_to_users

然后,您需要使用该方法(因为您正在访问现有表,而不是创建新表)。你可以添加一个这样的列:Schema::table()

public function up()
{
    Schema::table('users', function($table) {
        $table->integer('paid');
    });
}

并且不要忘记添加回滚选项:

public function down()
{
    Schema::table('users', function($table) {
        $table->dropColumn('paid');
    });
}

然后,您可以运行迁移:

php artisan migrate

这在Laravel 4 / Laravel 5的文档中都有很好的介绍:

对于Laravel 3:

编辑:

用于在特定列之后添加此字段。$table->integer('paid')->after('whichever_column');


答案 2

我将为使用Laravel 5.1及更高版本的将来读者添加mike3875的答案。

为了使事情更快,您可以使用标志“--table”,如下所示:

php artisan make:migration add_paid_to_users --table="users"

这将自动添加 和 方法内容:updown

/**
 * Run the migrations.
 *
 * @return void
 */
public function up()
{
    Schema::table('users', function (Blueprint $table) {
        //
    });
}

同样,您可以在创建新迁移时使用该选项,这将为您的迁移添加更多样板。小点,但在做大量工作时很有用!--create["table_name"]


推荐