我有一个现有的数据库表,我想在它上面添加列。但是,当我运行php artisan migrate
命令时,它没有说明要迁移什么。但是我已经添加了一个用于添加表列的Schema。我读过一些文章和链接,我应该在添加新列之前先运行php artisan migrate:refresh
。问题是,它会删除表中现有的数据。是否有任何方法可以执行迁移并成功地在表中添加列而不删除数据?请帮我一下。多谢了。这是我的迁移代码。
public function up()
{
//
Schema::create('purchase_orders', function(Blueprint $table){
$table->increments('id');
$table->string('po_code');
$table->text('purchase_orders');
$table->float('freight_charge');
$table->float('overall_total');
$table->timestamps();
});
Schema::table('purchase_orders', function(Blueprint $table){
$table->string('shipped_via');
$table->string('terms');
});
}
/**
* Reverse the migrations.
*
* @return void
*/
public function down()
{
//
Schema::drop('purchase_orders');
}
我想在purchase_orders
表中添加列shipped_via
和terms
。
3条答案
按热度按时间yhxst69z1#
使用以下命令修改现有表
使用
--create
创建新表,使用--table
修改现有表。现在将创建一个新的迁移文件。在此文件的
up()
函数中添加以下行然后运行
php artisan migrate
rjzwgtxy2#
Laravel在你的数据库中有一个表,它可以跟踪所有已经执行的迁移。因此,仅通过更改迁移文件,Laravel不会自动为您重新运行该迁移。因为迁移已经被Laravel执行了。
因此,最好的做法是创建一个新的迁移,并将您已经拥有的代码段放入其中(您走对了路!).
如果当前的purchase_orders迁移将删除表,则不需要填充down函数。
要迁移新迁移,只需运行:
qcuzuvrc3#
现在,您将获得新的迁移文件,您可以在迁移文件中添加列。