3

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

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

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

无论如何更新我的数据库列而不删除所有内容?

4

2 回答 2

3

The 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

于 2016-05-23T16:43:16.617 回答
0

如果您只添加一些列[s],则可以使用完整的插入语句导出数据,运行 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
于 2017-07-14T17:01:05.883 回答