在Laravel迁移中重命名列,强制使用小写

时间:2019-04-03 02:26:22

标签: php mysql laravel migration

我正在尝试进行迁移,以重命名我的一个表上的列。 每当我尝试重命名该列时,都会出现以下错误。

  

“表'Table-Name上没有名称为'column_name_id'的列。”

但是,没有列'column_name_id'的原因是它应该像我写的那样对'Column_Name_ID'区分大小写。

我尝试使用strtoupper()。我还使用反引号来查看是否有帮助。不开心

我不确定这是否与数据库设置有关,但是我之前使用过namedColumn没问题。

public function up()
    {
        Schema::table('`Table-Name`', function (Blueprint $table) {
            $table->renameColumn('Column_Name_ID', 'Column_Name');
        });
    }

    /**
     * Reverse the migrations.
     *
     * @return void
     */
    public function down()
    {
        Schema::table('`Table-Name`', function (Blueprint $table) {
            $table->renameColumn('Column_Name', 'Column_Name_ID');
        });
    }

2 个答案:

答案 0 :(得分:0)

我最终要做的是因为我不会花太多时间尝试解决此问题,所以使用的是原始语句。

public function up()
   {
       DB::statement('alter table `Table-Name` change column `Column_Name_ID` `Column_Name` integer(11) null');
   }

   /**
    * Reverse the migrations.
    *
    * @return void
    */
   ///

答案 1 :(得分:0)

issue中所述,对名称使用双引号。

Schema::table('`Table-Name`', function (Blueprint $table) {
    $table->renameColumn('"Column_Name_ID"', '"Column_Name"');
});