laravel數據庫遷移int型數據該怎么寫


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

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM