我不知道如何使用Laravel框架向现有的数据库表中添加新列。

我试图编辑迁移文件使用…

<?php

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

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

如何添加新列?


当前回答

如果这些解决方案都不起作用,您可能已经重新创建了迁移文件,然后添加了一个新列,并尝试运行php artisan migrate来更新旧表,它将尝试创建这个表,但这个表已经存在,所以它会给出一个错误。为了解决这个问题,将迁移文件重命名为以前命名的(以日期开始),然后添加新的列运行php artisan migrate,这实际上会更新旧的而不是创建,解决了我的问题。

其他回答

警告:这是一个破坏性的行动。如果使用这种方法,请确保首先备份数据库。

你可以简单地修改你现有的迁移文件,例如在你的表中添加一个列,然后在你的终端输入:

$ php artisan migrate:refresh

这个东西在laravel 5.1上工作。

首先,在终端上执行这段代码

php artisan make:migration add_paid_to_users --table=users

然后转到项目目录,展开目录database - migration,编辑文件add_paid_to_users.php,添加这段代码

public function up()
{
    Schema::table('users', function (Blueprint $table) {
         $table->string('paid'); //just add this line
    });
}

然后返回到您的终端并执行此命令

php artisan migrate

希望这对你有所帮助。

我将添加到mike3875的答案,供将来使用Laravel 5.1及后续版本的读者使用。

为了让事情变得更快,你可以像这样使用标志"——table":

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

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

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

类似地,您可以在创建新的迁移时使用——create["table_name"]选项,这将为您的迁移添加更多的样板。这是个小问题,但在做大量的事情时很有帮助!

首先回滚之前的迁移

php artisan migrate:rollback

之后,您可以修改现有的迁移文件(添加新列、重命名列或删除列),然后重新运行迁移文件

php artisan migrate

向迁移文件中添加列并运行此命令。

php artisan migrate:refresh --path=/database/migrations/your_file_name.php