最近使用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');
希望对大家有帮助!