作成方法でプライマリキーではないデータベースの自動インクリメントフィールドを設定するにはどうすればよいですか?非増分を非主キーに設定する方法は?
唯一の方法は生のクエリを使用していますか?
DB::statement('ALTER TABLE table CHANGE field field INT(10)AUTO_INCREMENT');
作成方法でプライマリキーではないデータベースの自動インクリメントフィールドを設定するにはどうすればよいですか?非増分を非主キーに設定する方法は?
唯一の方法は生のクエリを使用していますか?
DB::statement('ALTER TABLE table CHANGE field field INT(10)AUTO_INCREMENT');
そうするように実装されていません。しかし、私はこれを見つけました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()
ラインを適合させる必要があります。
現在の回答は機能しません。自動増分列は主キーでなければなりません。同じレベルの一意性を得るために挿入するときには、firstOrCreate
を使用することをお勧めします(ただし、自動インクリメントキーを使用可能にしたい場合)。