使用Laravel 5更新数据库表时,有没有办法保留数据?

问题描述:

我有一个工作Laravel应用程序,我需要更新一个模型,并添加一个新的列到数据库。为了做到这一点,我下面的代码添加到数据库/迁移/ table.php文件:使用Laravel 5更新数据库表时,有没有办法保留数据?

Schema::table('client', function (Blueprint $table) { 
     $table->string('newColumn'); 
}); 

当我尝试更新数据库(与php artisan migrate)我得到的消息“没有迁移”。我注意到应用此更改的唯一方法是执行php artisan migrate:refresh或重置,但两个命令都会删除数据库中的每一行。

无论如何更新我的数据库列而不放弃一切?

+1

你有移民表吗?你是否使用'php artisan make:migration add_newColumn_to_client'创建你的迁移? –

+0

不,我使用make命令创建了数据库迁移表,但不添加该列,因此出现问题。我在迁移文件中添加了新的字段。谢谢! – Bruno

+1

对,很高兴很简单! –

完整的解决方案疯子描述是:php artisan make:migration add_newColumn_to_client

  • 与创建新列。
  • 下面的代码添加到新创建的文件(date_add_newColumn_to_client):

    public function up() 
    { 
        Schema::table('client', function (Blueprint $table) { 
         $table->string('newColumn'); 
        }); 
    } 
    
  • 运行php artisan migrate

如果你只是增加一些列[S],可以导出数据使用完整的插入语句,运行迁移:刷新并重新导入数据。对于MySQL:

mysqldump -u {USER} -p {DATABASE} --no-create-db --no-create-info --complete-insert > yourdata.sql 
artisan migrate:refresh 
mysql -u {USER} -p {DATABASE} < yourdata.sql