[学习教程] laravel中的数据迁移表结构、字段类型、定义整理

[复制链接]
haoyangtian实名认证 手机认证 视频认证 发表于 2019-6-12 17:02:03 | 显示全部楼层 |阅读模式 打印 上一主题 下一主题
  1.   /* 表引擎 */

  2.   $table->engine = 'InnoDB';

  3.   /* 类型 */

  4.   // - 数字

  5.   $table->bigInteger('id');

  6.   $table->integer('id');

  7.   $table->mediumInteger('id');

  8.   $table->smallInteger('id');

  9.   $table->tinyInteger('id');

  10.   $table->decimal('balance', 15, 8);

  11.   $table->float('balance');

  12.   $table->double('balance', 15, 8);

  13.   $table->real('balance');

  14.   // - 时间

  15.   $table->date('created_at');

  16.   $table->dateTime('created_at');

  17.   $table->timeStamp('created_at');

  18.   $table->time('sunrise');

  19.   // - 字符串

  20.   $table->char('name', 4);

  21.   // 等同于 VARCHAR

  22.   $table->string('name');

  23.   // 等同于 VARCHAR(100)

  24.   $table->string('name', 100);

  25.   $table->text('description');

  26.   $table->mediumText('description');

  27.   $table->longText('description');

  28.   // 等同于 BLOB

  29.   $table->binary('data');

  30.   $table->enum('choices', ['foo', 'bar']);

  31.   $table->boolean('confirmed');

  32.   // - 不经常用的

  33.   $table->json('options'); // 等同于数据库中的 JSON 类型

  34.   $table->jsonb('options'); // 等同于数据库中的 JSONB 类型

  35.   $table->uuid('id'); // 等同于数据库的UUID

  36.   // 自增ID,类型为 bigint

  37.   $table->bigIncrements('id');

  38.   // 自增ID,类型为 int

  39.   $table->increments('id');

  40.   // 添加一个 INTEGER类型的 taggable_id 列和一个 STRING类型的 taggable_type列

  41.   $table->morphs('taggable');

  42.   // 和 timestamps() 一样,但允许 NULL 值

  43.   $table->nullableTimestamps('created_at');

  44.   // 添加一个 'remember_token' 列:VARCHAR(100) NULL

  45.   $table->rememberToken();

  46.   // 添加 'created_at' 和 'updated_at'

  47.   $table->timeStamps();

  48.   // 新增一个 'deleted_at' 列,用于 '软删除'

  49.   $table->softDeletes();

  50.   /* 列修改器 */

  51.   ->first(); // 将列置于表第一个列(仅限于MYSQL)

  52.   ->after('列名'); // 将列置于某一列后(仅限于MYSQL)

  53.   ->nullable(); // 允许列为NULL

  54.   ->defalut($value); // 指定列默认值

  55.   ->unsigned(); // 设置整型列为 UNSIGNED

  56.   /* 修改列 需安装 doctrine/dbal,composer require doctrine/dbal */

  57.   // change() - 修改列

  58.   $table->string('name', 30)->nullable()->change();

  59.   // renameColumn() - 重命名列

  60.   $table->renameColumn('name', 'title');

  61.   /* 删除列 需安装 doctrine/dbal,composer require doctrine/dbal */

  62.   // 删除单个列

  63.   $table->dropColumn('name');

  64.   // 删除多个列

  65.   $table->dropColumn(['name', 'age']);

  66.   /* 创建索引

  67.   * 每种索引,都有3种方式:

  68.   * 一个string参数

  69.   * 一个array参数 - 组合索引

  70.   * 2个参数 - 允许自定义索引名

  71.   * 注意:

  72.   * laravel自动分配的索引名:

  73.   * 表名_列名_索引类型:users_mobile_unique // users表的mobile字段为unique 索引

  74.   */

  75.   $table->primary('id'); // 主键索引

  76.   $table->primary(['first', 'last']); // 混合索引(这个不太清楚)

  77.   $table->primary('first', 'first_primary_index']); // 自定义索引名

  78.   $table->unique('mobile'); // 唯一索引

  79.   $table->index('state'); // 普通索引

  80.   /* 删除索引 */

  81.   $table->dropPrimary('索引名')

  82.   $table->dropUnique('索引名')

  83.   $table->dropIndex('索引名')

  84.   /* 外键约束

  85.   * 注意:

  86.   * laravel自动分配的外键名:

  87.   * 表名_列名_foreign:posts_user_id_foreign // posts表的user_id字段添加foreign

  88.   */

  89.   // 添加外键,当前表的user_id,外键关联users表的id列

  90.   $table->foreign('user_id')->references('id')->on('users');

  91.   // 约束 'on delete' 和 'on update' 时,才关联外键

  92.   $table->foreign('user_id')->references('id')->on('users')->onDelete;

  93.   // 删除外键

  94.   $table->dropForeign('posts_user_id_foreign');
复制代码


回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

专注源码分享,教程分享
全国服务电话

187-8198-7163

周一至周8:00-22:00

反馈建议

cdhaoyt@163.com 在线QQ咨询

扫描二维码关注我们

Powered by Discuz! X3.2© 2001-2013 Comsenz Inc.( 蜀ICP备16032957号-1