1. 程式人生 > >laravel中的資料遷移表結構,欄位型別,定義整理

laravel中的資料遷移表結構,欄位型別,定義整理

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');