laravel中的数据迁移表结构、字段类型、定义整理

本文整理了 Laravel 框架中数据迁移时常用的表结构和字段类型,包括其表示方式,旨在帮助开发者更好地理解和使用 Laravel 的迁移功能。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

最近使用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');  

    // - 不经常用的  
    $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'); 

希望对大家有帮助!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值