2017-03-21 7 views
1

作成方法でプライマリキーではないデータベースの自動インクリメントフィールドを設定するにはどうすればよいですか?非増分を非主キーに設定する方法は?

唯一の方法は生のクエリを使用していますか?

DB::statement('ALTER TABLE table CHANGE field field INT(10)AUTO_INCREMENT');

答えて

1

そうするように実装されていません。しかし、私はこれを見つけましたLaravel Forums

Schema::table('table', function(Blueprint $t) { 
    // Add the Auto-Increment column 
    $t->increments("some_column"); 

    // Remove the primary key 
    $t->dropPrimary("table_some_column_primary"); 

    // Set the actual primary key 
    $t->primary(array("id")); 
}); 

これはテストされていませんが動作するはずです。私はLaravelが主キーをどのように呼び出すのか分かりません。最初に確認して、dropPrimary()ラインを適合させる必要があります。

0

現在の回答は機能しません。自動増分列は主キーでなければなりません。同じレベルの一意性を得るために挿入するときには、firstOrCreateを使用することをお勧めします(ただし、自動インクリメントキーを使用可能にしたい場合)。