在迁移中向现有表添加新列
我真的不知道如何使用PHP laravel框架将数据添加到我的数据库的退出表中。
我试图编辑迁移文件
public function up() { Schema::create('users', function($table){ $table->integer("paid"); }); }
并在terminalphp artisan migrate:install
和migrate
如何添加新列?
要创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