laravel中的資料遷移表結構,欄位型別,定義整理
阿新 • • 發佈:2018-12-01
laravel中的資料遷移表結構,欄位型別,定義整理
/* 表引擎 */ $table->engine = 'InnoDB'; /* 類型別 */ // - 數字 $table->bigInteger('id'); $table->integer('id'); $table->mediumInteger('id'); $table->smallInteger('id'); $table->tinyInteger('id'); $table->decimal('balance', 15, 8); $table->float('balance'); $table->double('balance', 15, 8); $table->real('balance'); // - 時間 $table->date('created_at'); $table->dateTime('created_at'); $table->timeStamp('created_at'); $table->time('sunrise'); // - 字串 $table->char('name', 4); // 等同於 VARCHAR $table->string('name'); // 等同於 VARCHAR(100) $table->string('name', 100); $table->text('description'); $table->mediumText('description'); $table->longText('description'); // 等同於 BLOB $table->binary('data'); $table->enum('choices', ['foo', 'bar']); $table->boolean('confirmed'); // - 這3個沒見過 $table->json('options'); // 等同於資料庫中的 JSON 型別 $table->jsonb('options'); // 等同於資料庫中的 JSONB 型別 $table->uuid('id'); // 等同於資料庫的UUID // 自增ID,型別為 bigint $table->bigIncrements('id'); // 自增ID,型別為 int $table->increments('id'); // 新增一個 INTEGER型別的 taggable_id 列和一個 STRING型別的 taggable_type列 $table->morphs('taggable'); // 和 timestamps() 一樣,但允許 NULL 值 $table->nullableTimestamps('created_at'); // 新增一個 'remember_token' 列:VARCHAR(100) NULL $table->rememberToken(); // 新增 'created_at' 和 'updated_at' $table->timeStamps(); // 新增一個 'deleted_at' 列,用於 '軟刪除' $table->softDeletes(); /* 列修改器 */ ->first(); // 將列置於表第一個列(僅限於MYSQL) ->after('列名'); // 將列置於某一列後(僅限於MYSQL) ->nullable(); // 允許列為NULL ->defalut($value); // 指定列預設值 ->unsigned(); // 設定整型列為 UNSIGNED /* 修改列 需安裝 doctrine/dbal,composer require doctrine/dbal */ // change() - 修改列 $table->string('name', 30)->nullable()->change(); // renameColumn() - 重新命名列 $table->renameColumn('name', 'title'); /* 刪除列 需安裝 doctrine/dbal,composer require doctrine/dbal */ // 刪除單個列 $table->dropColumn('name'); // 刪除多個列 $table->dropColumn(['name', 'age']); /* 建立索引 * 每種索引,都有3種方式: * 一個string引數 * 一個array引數 - 組合索引 * 2個引數 - 允許自定義索引名 * 注意: * laravel自動分配的索引名: * 表名_列名_索引型別:users_mobile_unique // users表的mobile欄位為unique索引 */ $table->primary('id'); // 主鍵索引 $table->primary(['first', 'last']); // 混合索引(這個不太清楚) $table->primary('first', 'first_primary_index']); // 自定義索引名 $table->unique('mobile'); // 唯一索引 $table->index('state'); // 普通索引 /* 刪除索引 */ $table->dropPrimary('索引名') $table->dropUnique('索引名') $table->dropIndex('索引名') /* 外來鍵約束 * 注意: * laravel自動分配的外來鍵名: * 表名_列名_foreign:posts_user_id_foreign // posts表的user_id欄位新增foreign */ // 新增外來鍵,當前表的user_id,外來鍵關聯users表的id列 $table->foreign('user_id')->references('id')->on('users'); // 約束 'on delete' 和 'on update' 時,才關聯外來鍵 $table->foreign('user_id')->references('id')->on('users')->onDelete; // 刪除外來鍵 $table->dropForeign('posts_user_id_foreign');