laravel數據庫遷移int型數據該怎么寫
錯誤寫法:
$table->engine = 'MyISAM'; $table->increments('id',11)->primary('id')->comment('主鍵自增id');//自增id $table->integer('dir_id',11)->comment('目錄id');//目錄id $table->integer('user_id',11)->comment('用戶id');//用戶id $table->string('name',255)->comment('素材名稱');//素材名稱 $table->string('path',255)->comment('素材路徑');//素材路徑
錯誤提示:

laravel數據庫遷移中integer類型是無法指定長度的,很多小伙伴對integer類型傳遞第二個參數后會發現遷移報以錯誤
查看了錯誤提示后發現通過integer指定長度創建的子段自動添加了auto increament 以及 primary key 屬性。
查看源代碼后發現integer方法的第二個參數並不是指定長度,而是是否設置auto increment,所以integer方法無法指定子段長度,默認為11。
1 public function integer($column, $autoIncrement = false, $unsigned = false) 2 { 3 return $this->addColumn('integer', $column, 4 compact('autoIncrement', 'unsigned')); 5 }
所以正確寫法:
1 $table->engine = 'MyISAM'; 2 $table->increments('id')->comment('主鍵自增id');//自增id 3 $table->integer('dir_id',false,false)->comment('目錄id');//目錄id 4 $table->integer('user_id',false,false)->comment('用戶id');//用戶id 5 $table->string('name',255)->comment('素材名稱');//素材名稱 6 $table->string('path',255)->comment('素材路徑');//素材路徑
然后可執行
# php artisan migrate
成功提示:

數據庫生成如下:

如果需要修改字段,可以數據庫回滾
# php artisan migrate:rollback


