2016-06-16 9 views
1

私は、移行のためのスキーマを次ていますLaravelでデータ型を文字列からオートインクリメントに変更する方法は?

Schema::create('client', function(Blueprint $table) 
    { 
     $table->increments('id'); 

     $table->string('nbr', 10)->nullable()->default(null); 
     $table->string('name', 100); 
     $table->string('search', 100); 
     $table->string('image', 100)->nullable()->default(null); 
    } 

私は自動インクリメントに文字列「NBR」を変更しようとしています。私はいくつかのソリューションを試してみましたが、それらはいずれも以下を試していないworks.I:

Schema::table('client', function(Blueprint $table) 
    { 
     // $table->increments('nbr')->change(); 
     //$table->dropPrimary('nbr'); 
     DB::statement('ALTER TABLE client ALTER COLUMN nbr TYPE Integer NOT NULL AUTO_INCREMENT;'); 
    }); 

注:私は新しい移行ファイルを作成し、次のコードを追加PostgreSQLの

+0

を実行しますが、 '$卓上> dropColumn( 'NBR')を実行しようとしました;'と比べて単純に '$卓上>インクリメント( 'NBR')を行う;' – AfikDeri

+0

@私はそれを試みたが、私は "テーブルの複数の主キーが許可されていません"エラー – user3810794

+0

私は '$ table-> increment( 'nbr')'がデフォルトでプライマリであると思う、 '$ table-> bigIncrements( 'nbr ') '。わかりませんが、ショットに値する価値があります。 – AfikDeri

答えて

0

を使用しています。その後、php artisan migrate

public function up() 
{ 
    Schema::table('clients', function($table){ 
     $table->dropPrimary('clients_id_primary'); 
     $table->dropColumn('id'); 
     $table->dropColumn('nbr'); 
     $table->increments('nbr'); 
     $table->dropPrimary('clients_nbr_primary'); 
     $table->increments('id'); 
    }); 
} 


public function down() 
{ 
    Schema::table('clients', function($table){ 
     $table->dropColumn('nbr'); 
     $table->dropPrimary('clients_nbr_primary'); 
     $table->increments('id'); 
     $table->string('nbr', 10)->nullable()->default(null); 
    }); 
} 
+0

これは 'id'列を削除しませんか?私はidとnbrの両方の列が必要です。ここでidは主キーで、nbrは単なる増分です。 – user3810794

+0

"nbr"の列がほしいと思った。私は自分の答えを更新しました。その1つを試してください –

+0

"テーブルの複数の主キーが許可されていません"エラー – user3810794

関連する問題