Laravel数据库字段类型汇总_Laravel Migration数据类型大全

12次阅读

laravel迁移通过Schema Builder提供丰富的字段类型与修饰符,如increments、Stringjson、timestamp等定义表结构,结合NULLable、default、index、foreignId等方法配置字段属性和外键约束,支持mysqlpostgresqlsqlite主流数据库,推荐使用跨平台兼容类型以确保迁移一致性,掌握这些可高效管理数据库 schema。

Laravel数据库字段类型汇总_Laravel Migration数据类型大全

在Laravel中,使用迁移(Migration)来管理数据库结构是标准做法。Laravel的迁移功能基于php代码定义数据库表结构,使得团队协作和版本控制更加高效。其中,字段类型的定义通过Schema Builder提供的方法完成。以下是Laravel迁移中常用的数据类型汇总,适用于主流数据库(如MySQL、PostgreSQL、SQLite等),以帮助开发者快速查阅和使用。

常见字段类型(column Types)

Laravel迁移中通过$table->类型名()的方式添加字段,以下是最常用的字段类型:

  • increments(‘id’):自增整数,主键,默认unsigned,等同于MySQL的int AUTO_INCREMENT
  • bigIncrements(‘id’):大整数自增主键,对应BIGINT
  • Integer(‘votes’):普通整数(INT)
  • tinyInteger(‘status’):小整数(TINYINT),常用于状态字段
  • smallInteger(‘level’):短整数(SMALLINT)
  • mediumInteger(‘quantity’):中等整数(MEDIUMINT,MySQL特有)
  • bigInteger(‘account_id’):大整数(BIGINT)
  • unsignedInteger(‘user_id’):无符号整数
  • unsignedBigInteger(‘parent_id’):无符号大整数,常用于外键
  • Float(‘amount’, 8, 2):浮点数,支持指定总位数和小数位
  • double(‘price’, 10, 4):双精度浮点数
  • decimal(‘total’, 12, 2):高精度小数,适合金额存储
  • Boolean(‘is_active’):布尔值,存储0或1
  • string(‘name’, 100):可变字符串,支持指定长度,默认255
  • text(‘description’):长文本(TEXT)
  • mediumText(‘content’):中等长度文本(MEDIUMTEXT)
  • longText(‘article’):超长文本(LONGTEXT)
  • char(‘country_code’, 2):定长字符串
  • enum(‘status’, [‘active’, ‘inactive’])枚举类型,仅限支持数据库(如MySQL)
  • set(‘tags’, [‘news’, ‘hot’, ‘featured‘]):集合类型(MySQL特有)
  • json(‘options’)json字段,用于存储结构化数据
  • jsonb(‘meta’):PostgreSQL中的二进制JSON类型,查询效率更高
  • date(‘created_at’):日期字段(Y-m-d)
  • dateTime(‘published_at’):日期时间(Y-m-d H:i:s)
  • dateTimeTz(‘sent_at’):带时区的日期时间
  • time(‘start_time’):时间字段(H:i:s)
  • timeTz(‘local_time’):带时区的时间
  • timestamp(‘updated_at’):时间戳,常自动维护
  • timestampTz(‘checked_at’):带时区的时间戳
  • binary(‘photo’):二进制数据,用于存储文件内容
  • uuid(‘activation_token’):UUID字段,常用于唯一标识符
  • ipaddress(‘visitor_ip’):IP地址字段,自动验证格式
  • macAddress(‘device_mac’):MAC地址字段

字段修饰符(Column Modifiers)

在定义字段后,可以链式调用修饰符进一步配置字段行为:

  • ->Nullable():允许字段为NULL
  • ->default($value):设置默认值
  • ->unsigned():设置为无符号(用于整数和主键关联)
  • ->comment(‘描述信息’):添加字段注释
  • ->first():将字段置于表的第一列(MySQL)
  • ->after(‘field_name’):指定字段位置(MySQL)
  • ->unique():添加唯一索引
  • ->index():添加普通索引
  • ->primary():设置为主键
  • ->foreign():定义外键关系(需配合foreignId使用)

外键与索引支持

Laravel提供了便捷的方法处理外键约束:

  • $table->foreignId(‘user_id’)->constrained():定义外键字段并自动关联users表
  • ->onDelete(‘cascade’):删除主记录时级联删除
  • ->onUpdate(‘cascade’):更新主键时同步更新
  • $table->index([’email’, ‘status’]):创建复合索引

特殊类型与数据库兼容性

某些类型依赖具体数据库引擎支持:

  • MySQL支持:setgeometrypointlinestring 等空间类型
  • PostgreSQL支持:jsonbcidrinetmacaddr
  • SQLite对部分类型(如unsigned)模拟实现,实际存储可能不同

建议在项目中统一使用跨平台兼容的类型,避免迁移时出错。

基本上就这些,掌握这些字段类型和修饰符,就能高效构建Laravel应用的数据库结构。实际开发中结合php artisan make:migration命令和Schema语法,可快速实现数据表管理。不复杂但容易忽略细节,比如unsigned与外键匹配问题,需特别注意。

text=ZqhQzanResources