2015-08-11 5 views
0

Я хочу, чтобы произвести ниже запрос SQL,Как откатить столбец, который был изменен

ALTER TABLE `api`.`users` CHANGE COLUMN `id` `id` INT(11) UNSIGNED NOT NULL AUTO_INCREMENT ; 

в Laravel 5 был введен другой абстрактный слой, change, после этого вы можете закодировать так,

public function up() 
{ 
    Schema::table('users', function (Blueprint $table) { 
     //DB::statement("ALTER TABLE `api`.`users` 
     // CHANGE COLUMN `id` `id` INT(11) UNSIGNED NOT NULL AUTO_INCREMENT ;"); 
     $table->increments('id')->unsigned()->change(); 
    }); 
} 

Каков путь к аннулированию изменение, как мне написать down()?

Неудачно я попробовал следующее.

public function down() 
{ 
    //DB::statement("ALTER TABLE `api`.`users` 
    // CHANGE COLUMN `id` `id` INT(11) NOT NULL AUTO_INCREMENT ;"); 
    $table->increments('id')->change(); 
} 

--- Edit ---

Я работаю с существующей таблицей с реальными данными (в самом деле реплики в моей местной окружающей среде). Поэтому я боюсь, что, возможно, падение столбца не является моим вариантом.

+0

Оставьте колонку, а затем повторно добавьте ее? – Styphon

+0

"* Я пишу свое приложение() *" Есть ли способ, подобный этому? –

+0

@giannis в файле миграции таблицы, в нем есть две функции: 'public function up() {}' и 'public function down() {}', что подразумевает действие 'migrate' и' rollback'. –

ответ

0

Вы можете удалить столбец и снова добавить его. Поскольку это автоматически увеличивается, все существующие строки должны содержать один и тот же идентификатор.

public function down() 
{ 
    $table->dropColumn('id'); 
    $table->increments('id'); 
} 

Но не забывайте, что с помощью приращения автоматически добавит unsigned для вас и всех ваших ключей должны быть без знака, в том числе каких-либо внешние ключи столбцов.

+0

Я бы не стал бросать свою колонку с данными. Но тогда вы дали мне подсказку, где 'unsigned()' называется неявно. Я постараюсь поиграть с ним дальше. –

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