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

时间:2016-05-23 16:29:47

标签: laravel laravel-5 laravel-migrations

我有一个有效的Laravel应用程序,我需要更新模型并向数据库添加新列。为此,我将以下代码添加到database / migrations / table.php文件中:

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

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

是否有更新我的数据库列而不丢弃所有内容?

2 个答案:

答案 0 :(得分:3)

Maniac描述的完整解决方案将是:

  • 使用以下内容创建新列: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

答案 1 :(得分:0)

如果您只添加一些列[s],则可以使用完整的insert语句导出数据,运行migrate:refresh并重新导入数据。对于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