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

我真的不知道如何使用PHP laravel框架将数据添加到我的数据库的退出表中。

我试图编辑迁移文件

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

并在terminalphp artisan migrate:installmigrate

如何添加新列?

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

对于Laravel 3:

 php artisan migrate:make add_paid_to_users 

对于Laravel 5+:

 php artisan make:migration add_paid_to_users 

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

 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 3的文档中都包含了这一点:

  • 架构生成器
  • 迁移

而对于Laravel 4 / Laravel 5:

  • 架构生成器
  • 迁移

编辑:

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

如果你使用的是Laravel 5,那么命令就是这样;

 php artisan make:migration add_paid_to_users 

所有的命令(控制器,模型,迁移等)已被移动到make:命令下。

虽然php artisan migrate仍然是一样的。

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

为了使事情更快,你可以使用这样的标志“ – 表”:

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

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

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

类似的,你可以在创build新的迁移时使用--create["table_name"]选项,这将为迁移添加更多的样板。 小的一点,但有助于做他们的负载!

你可以在最初的Schema::create方法中添加新的列,如下所示:

 Schema::create('users', function($table) { $table->integer("paied"); $table->string("title"); $table->text("description"); $table->timestamps(); }); 

如果您已经创build了一个表,您可以通过创build一个新的迁移并使用Schema::table方法来为该表添加额外的列:

 Schema::table('users', function($table) { $table->string("title"); $table->text("description"); $table->timestamps(); }); 

这个文档是相当透彻的,从版本3到版本4没有太大的变化。

您可以简单地修改现有的迁移文件,例如在表格中添加一列,然后在terminal中键入:

 $ php artisan migrate:refresh