2016-12-27 4 views
3

私はLaravelをしばらく学んでいましたが、自分で基本的なプロジェクトをいくつか作成しましたが、今日はより多くの整数でテーブルを移行しようとしていました。しかし、それはまだ誤りを犯す。Laravel 5.1のマイグレーションエラーが自動的に増分される

整数はすべてauto_incrementとプライマリになるようにしてください。問題になる可能性がありますが、解決方法はわかりません。

 Schema::create ('users', function (Blueprint $table) 
    { 
     $table->increments ('id'); 
     $table->string ('email')->unique(); 
     $table->string ('pass',250); 
     $table->integer ('tickets',4); 
     $table->integer ('tokens',4); 
     $table->integer ('in_raffle',4); 
     $table->text ('profile',500); 
     $table->string ('ip',20); 
     $table->integer ('ban',1); 
     $table->integer ('notice',1); 
     $table->timestamp ('last_login'); 

    }); 

https://s28.postimg.org/fh3uaqdct/screen2.jpg

は、誰かが私を伝えることができ、どのように私はこの問題を解決することができますか?正しく動作させるために編集するもの

ありがとう、良い一日を!すべてinteger()

答えて

3

削除秒パラメータ:

$table->integer('tickets'); 
$table->integer('tokens'); 
$table->integer('in_raffle'); 
$table->integer('ban'); 
$table->integer('notice'); 

事はinteger()方法についてsecontパラメータがあるがautoIncrementあり、それはboolean型として扱われます。 falseから別のものを渡すと、Laravelはこの整数をauto_incrementにしたいと考えています。

public function integer($column, $autoIncrement = false, $unsigned = false) 

ので、整数の長さをオフのままにし、それが正常に動作します:

+0

おかげで、それは働きます!私に教えてもらえますか?どのように整数のサイズを追加できますか?すべての整数がint(11)に設定されているため、移行でサイズを追加することは可能ですか?はいの場合、どうですか? ありがとうございます! – Mario

+0

いいえ、残念ながら移行でそれを行うことはできません。 intのサイズは最小値または最大値とは関係がないので、実際には 'zerofill'を使用している場合にのみ便利です。ここには良い書き方があります。 https://blogs.oracle.com/jsmyth/entry/what_does_the_11_mean – user3158900

+0

できません。あなたができることは[これらのタイプの整数](https://laravel.com/docs/5.3/migrations#creating-columns)を使用することです: 'tinyInteger'、' smallInteger'、 'mediumInteger'、' integer'、 bigInteger' –

1

関数の宣言は次のようになります。長さ11より小さい整数を使用する場合は、hereと記載されているsmallIntegerまたはmediumIntegerを使用できます。

0

$table->tinyInteger('tickets'); 
$table->tinyInteger('tokens'); 
$table->tinyInteger('in_raffle'); 
$table->boolean('ban')->default(false); 
$table->boolean('notice')->default(false); 
関連する問題