2016-07-18 6 views
5

У меня есть этот файл миграцииLaravel :: Лучший способ обновить внешний ключ

Schema::create('table_one', function(Blueprint $table) 
{ 
    $table->increments('id'); 
    $table->string('name'); 
    $table->integer('table_two_id')->unsigned(); 
    $table->foreign('table_two_id')->references('id')->on('table_two'); 
    $table->timestamps(); 
}); 

и я хочу, чтобы обновить, чтобы сделать его -> OnDelete («Каскад»);

$table->foreign('table_two_id')->references('id')->on('table_two')->onDelete('cascade'); 

Что такое лучший способ сделать это?

Есть ли что-то вроде -> change();

Благодаря

+0

actualy есть 'https: // laravel.com/документы/5,0/схема # изменение-columns' –

+0

Я не изменяя столбцы, я меняю внешние ключи. –

ответ

9

Удалите внешнюю клавишу, а затем делать это снова и запустить миграцию.

public function up() 
{ 
    Schema::table('table_one', function ($table) { 
     $table->dropForeign('table_two_id'); 

     $table->foreign('table_two_id') 
      ->references('id')->on('table_two') 
      ->onDelete('cascade'); 
    }); 
} 
+0

Это имеет смысл, потому что MySQL будет делать то же самое, в этом случае нет «изменений» в MySQL. Тем не менее, я ожидаю, что на уровне Laravel для обстановки/single_command появится такая ситуация. Благодарю. –

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