繁体   English   中英

如何通过Laravel迁移向数据库表添加一列?

[英]How to add one column to a DB table with Laravel migrations?

我正在使用Laravel迁移文件来帮助为我的项目设置MariaDB模式。 它适用于架构的初始表设置,但是在创建它之后,如何(如果可能的话)如何向迁移文件中添加一个字段,并在数据库中仅创建一个字段而不会影响任何现有的字段/数据?

例如,假设我有一个如下所示的up方法:

public function up()
{
    Schema::create('test_table', function (Blueprint $table) {
        $table->increments('id');
        $table->string('name');
        $table->timestamps();
    });
}

然后,我想添加一个desc字段,如下所示:

public function up()
{
    Schema::create('test_table', function (Blueprint $table) {
        $table->increments('id');
        $table->string('name');
        $table->string('desc')->nullable();
        $table->timestamps();
    });
}

如果我在添加desc字段后运行php artisan migrate desc ,它将按预期工作,还是会弄乱现有的东西? 我不敢尝试不知道会发生什么,我想首先检查。

另外,我尝试查看Laravel文档以找到此问题的答案( https://laravel.com/docs/5.7/migrations ),但是找不到任何相关的内容。
谢谢。

通常情况下,你应该创建新的迁移,你只需要添加新的领域。 方法up应该是这样的:

public function up()
{
    Schema::table('test_table', function (Blueprint $table) {
        $table->string('desc')->nullable()->after('name');
    });
}

你不要在这里使用的通知Schema::create ,但Schema::table来更新现有的表。

当然,如果您尚未部署应用程序并且可以从头开始,则可以修改现有迁移,但是如果您不确定,最好的方法是在仅修改现有表的情况下创建新迁移。

您应该在终端运行命令中执行此操作

php artisan make:migration add_desc_field_in_test_table --table=test_table

然后,在migration文件的up()函数中,创建字段:

public function up()
{
    Schema::table('test_table', function (Blueprint $table) {
        $table->string('desc')->nullable();
    });
}

它不会弄乱当前的表结构。 它将仅在test_table 添加 desc列。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM