webentwicklung-frage-antwort-db.com.de

Laravel :: Beste Möglichkeit, den Fremdschlüssel zu aktualisieren

Ich habe diese Migrationsdatei

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

und ich möchte aktualisieren, um es -> onDelete ('cascade') zu machen;

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

Was ist der beste Weg, dies zu tun?

Gibt es so etwas wie -> change ();

Vielen Dank

11

Löschen Sie den Fremdschlüssel, fügen Sie ihn erneut hinzu und führen Sie die Migration aus. 

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

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

Christopher K. hat recht, bei Laravel docs sagt:

Um einen Fremdschlüssel zu löschen, können Sie die dropForeign-Methode verwenden. Fremdschlüsseleinschränkungen verwenden dieselbe Namenskonvention wie Indizes. Also, wir verketten den Tabellennamen und die Spalten in der Einschränkung und fügen dann den Namen mit "_foreign" hinzu:

$table->dropForeign('posts_user_id_foreign'); 

Sie können auch einen array -Wert übergeben, der beim Ablegen automatisch den herkömmlichen Einschränkungsnamen verwendet:

$table->dropForeign(['user_id']);

https://laravel.com/docs/5.7/migrations#foreign-key-constraints

0
Ricard