2016-08-26 5 views
1

Ich habe diese Migration.Feld kann nicht auf Null gesetzt werden

public function up() 
{ 
    Schema::table('products', function (Blueprint $table) { 
     $table->integer('category_id')->nullable()->unsigned()->change(); 
    }); 
} 


public function down() 
{ 
    Schema::table('products', function (Blueprint $table) { 
     $table->integer('category_id')->nullable(false)->change(); 
    }); 
} 

Es macht die category_id Feld nullable auf up-Methode und arbeiten gut, aber wenn ich versuche, es gibt diesen Fehler rückgängig zu machen:

[PDOException] 
SQLSTATE[HY000]: General error: 1832 Cannot change column 'category_id': used in a foreign key constraint 'products_category_id_foreign' 

Was soll ich auf Rollback zu tun? Der Zweck dieser Migration besteht darin, das Feld beim Ausführen nULL-fähig zu machen und es beim Rollback nicht rückgängig zu machen.

+1

Das Problem ist, dass wenn Sie es zurückrollen, jede Zeile, die eine null category_id enthält, plötzlich ungültig wird. Sie müssen also zuerst diese Zeilen entfernen, um sie auszuführen. (Und es funktioniert möglicherweise auch dann nicht, weil es eine Fremdschlüsseleinschränkung ist - aber es ist einen Versuch wert.) –

Antwort

1

Ich denke, Sie können versuchen, Fremdschlüssel Einschränkungen abzuschalten. Beachten Sie jedoch die Auswirkungen davon.

Verwandte Themen