2017-02-01 4 views
1

У меня есть

существующий столбец называется cpe_mac. Я создал его с помощью миграции, как это:Обновление существующего столбца Атрибуты - Laravel 5 Миграция

$table->string('cpe_mac')->default(NULL)->nullable(); 

Я хочу

Я хочу добавить ->unique() в этой колонке, без уронить его и повторно добавить.


Я попытался

$table->string('cpe_mac')->unique(); 

Миграция файла

<?php 

use Illuminate\Database\Schema\Blueprint; 
use Illuminate\Database\Migrations\Migration; 

class AlterCaptivePortalTable212017 extends Migration 
{ 
    /** 
    * Run the migrations. 
    * 
    * @return void 
    */ 
    public function up() 
    { 
     Schema::table('captive_portals', function (Blueprint $table) { 
      $table->string('cpe_mac')->unique(); 
     }); 
    } 

    /** 
    * Reverse the migrations. 
    * 
    * @return void 
    */ 
    public function down() 
    { 
     Schema::table('captive_portals', function (Blueprint $table) { 
      $table->string('cpe_mac')->default(NULL)->nullable(); 
     }); 
    } 
} 

Я держал

получение

SQLSTATE[42701]: Duplicate column: 7 ERROR: column "cpe_mac" of relation "captive_portals" already exists 

Есть ли для того чтобы достигнуть этого, не уронить свой существующий столбец?

(У меня есть данные клиента много, что не может быть удален!)

Как бы один идти о и осуществить это?


Я открываю любые предложения на данный момент.

Любые подсказки/предложения/помощь по этому поводу будут очень благодарны!

ответ

2

Вы должны использовать change() метод:

Schema::table('captive_portals', function (Blueprint $table) { 
    $table->string('cpe_mac')->unique()->change(); 
}); 

В качестве альтернативы, вы можете создать индекс после определения столбца. Например:

$table->unique('email'); 

https://laravel.com/docs/5.4/migrations#indexes

+1

Он отлично работает !!!!! – ihue

0

Если столбец уже заданы, вы можете использовать:

$table->unique('cpe_mac'); 

 Смежные вопросы

  • Нет связанных вопросов^_^