2016-07-18 472 views
5

Ho questo file di migrazionelaravel :: modo migliore per aggiornare estera chiave

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(); 
}); 

e voglio aggiornare per renderla -> onDelete ('a cascata');

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

Qual è il modo migliore per farlo?

C'è qualcosa come -> change();

Grazie

+0

actualy c'è 'https: // laravel.com/docs/5,0/schema # cambia-columns' –

+0

Io non sono le colonne che cambiano, sto cambiando le chiavi esterne. –

risposta

9

Eliminare la chiave esterna poi farlo di nuovo ed eseguire la migrazione.

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

Ha senso, perché MySQL lo farebbe allo stesso modo, non c'è "cambiamento" in MySQL per quel caso. Comunque mi aspetto un wrapper/single_command a livello di Laravel per una situazione come questa. Grazie. –