如何在laravel中向现有表添加新列

时间:2018-03-06 11:35:59

标签: php mysql laravel-5

我在表格任务中添加了新的列名称标题。但我收到一个错误,该列在该表中不存在。任何人都可以帮我解决这个错误。这是我的代码:

php artisan make:migration add_title_to_tasks_table --table="tasks"然后添加了此代码

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

创建新表文件

3 个答案:

答案 0 :(得分:2)

要更改表格并添加列。

     /**
     * Run the migrations.
     *
     * @return void
     */
    public function up() {
        Schema::table('tasks', function (Blueprint $table) {

            $table->string('title')->after('id');

           // to change column datatype or change it to `nullable` 
           // or set default values , this is just example

           $table->string('title')->default('Test')->change(); 

        });
    }

您可以在此处引用文档,Laravel Migration

答案 1 :(得分:1)

对于那些不熟悉laravel并寻求解决方案的人,请按照以下步骤操作 1)。 php artisan make:migration add_title_to_tasks_table --table="tasks"

2)。在迁移文件夹中编辑新创建的文件,然后添加以下内容。

public function up() {
    Schema::table('tasks', function (Blueprint $table) {

        $table->string('title')->after('id');

       // to change column datatype or change it to `nullable` 
       // or set default values , this is just example

       $table->string('title')->default('Test')->change(); 

    });
}

3)。运行迁移命令。

php artisan migrate

答案 2 :(得分:0)

执行以下操作:

/**
 * Run the migrations.
 *
 * @return void
 */
public function up()
{
    Schema::table('tasks', function (Blueprint $table) {
       $table->string('title')->after('your-column-name');
    });
}

替换你的专栏名称'使用您现有的列名。

保存文件。从终端执行:

php artisan migrate

上面的命令会将列添加到您的表中。

您收到该错误是因为您没有运行migrate命令。 无论何时创建迁移文件,都必须执行上述命令才能查看数据库表中的更改。

此外,如果模型$fillable属性中不存在新列,则还必须将其添加到那里。

/**
 * The attributes that are mass assignable.
 *
 * @return  array
 */
protected $fillable = [
    'title', // <-- new column name
    // .. other column names
];

未能更新$fillable属性将导致MassAssignmentExecption

希望这会帮助你。快乐的编码。欢呼声。