ThinkChat2.0新版上线,更智能更精彩,支持会话、画图、阅读、搜索等,送10W Token,即刻开启你的AI之旅 广告
## 可用的字段类型 * 数据库结构生成器包含构建表时可以指定的各种字段类型: | 命令 | 说明 | | --- | --- | | $table->id(); | $table->bigIncrements('id') 的别名 | | $table->foreignId('user\_id'); | $table->unsignedBigInteger('user\_id') 的别名 | | $table->bigIncrements('id'); | 递增 ID(主键),相当于「UNSIGNED BIG INTEGER」 | | $table->bigInteger('votes'); | 相当于 BIGINT | | $table->binary('data'); | 相当于 BLOB | | $table->boolean('confirmed'); | 相当于 BOOLEAN | | $table->char('name', 100); | 相当于带有长度的 CHAR | | $table->date('created\_at'); | 相当于 DATE | | $table->dateTime('created\_at', 0); | 相当于 DATETIME ,可以指定位数 | | $table->dateTimeTz('created\_at', 0); | 相当于 DATETIME (带时区) ,可以指定位数 | | $table->decimal('amount', 8, 2); | 相当于 DECIMAL,可以指定总位数和小数位数 | | $table->double('amount', 8, 2); | 相当于 DOUBLE,可以指定总位数和小数位数 | | $table->enum('level', \['easy', 'hard'\]); | 相当于 ENUM | | $table->float('amount', 8, 2); | 相当于 FLOAT,可以指定总位数和小数位数 | | $table->geometry('positions'); | 相当于 GEOMETRY | | $table->geometryCollection('positions'); | 相当于 GEOMETRYCOLLECTION | | $table->increments('id'); | 递增 ID(主键),相当于 UNSIGNED INTEGER | | $table->integer('votes'); | 相当于 INTEGER | | $table->ipAddress('visitor'); | 相当于 IP 地址 | | $table->json('options'); | 相当于 JSON | | $table->jsonb('options'); | 相当于 JSONB | | $table->lineString('positions'); | 相当于 LINESTRING | | $table->longText('description'); | 相当于 LONGTEXT | | $table->macAddress('device'); | 相当于 MAC 地址 | | $table->mediumIncrements('id'); | 递增 ID(主键),相当于 UNSIGNED MEDIUMINT | | $table->mediumInteger('votes'); | 相当于 MEDIUMINT | | $table->mediumText('description'); | 相当于 MEDIUMTEXT | | $table->morphs('taggable'); | 相当于加入递增 UNSIGNED BIGINT 类型的 taggable\_id 与字符串类型的 taggable\_type | | $table->uuidMorphs('taggable'); | 相当于添加一个 CHAR (36) 类型的 taggable\_id 字段和 VARCHAR (255) UUID 类型的 taggable\_type | | $table->multiLineString('positions'); | 相当于 MULTILINESTRING | | $table->multiPoint('positions'); | 相当于 MULTIPOINT | | $table->multiPolygon('positions'); | 相当于 MULTIPOLYGON | | $table->nullableMorphs('taggable'); | 添加一个可以为空版本的 morphs() 字段. | | $table->nullableUuidMorphs('taggable'); | 添加一个可以为空版本的 uuidMorphs() 字段 | | $table->nullableTimestamps(0); | timestamps() 方法的别名 | | $table->point('position'); | 相当于 POINT | | $table->polygon('positions'); | 相当于 POLYGON | | $table->rememberToken(); | 添加一个允许空值的 VARCHAR (100) 类型的 remember\_token 字段 | | $table->set('flavors', \['strawberry', 'vanilla'\]); | 相当于 SET | | $table->smallIncrements('id'); | 递增 ID(主键),相当于 UNSIGNED SMALLINT | | $table->smallInteger('votes'); | 相当于 SMALLINT | | $table->softDeletes('deleted\_at', 0); | 相当于为软删除添加一个可空的 deleted\_at 字段 | | $table->softDeletesTz('deleted\_at', 0); | 相当于为软删除添加一个可空的 带时区的 deleted\_at 字段 | | $table->string('name', 100); | 相当于指定长度的 VARCHAR | | $table->text('description'); | 相当于 TEXT | | $table->time('sunrise', 0); | 相当于指定位数的 TIME | | $table->timeTz('sunrise', 0); | 相当于指定位数带时区的 TIME | | $table->timestamp('added\_on', 0); | 相当于指定位数的 TIMESTAMP | | $table->timestampTz('added\_on', 0); | 相当于指定位数带时区的 TIMESTAMP | | $table->timestamps(0); | 相当于添加可空的 TIMESTAMP 类型的 created\_at 和 updated\_at | | $table->timestampsTz(0); | 相当于添加指定时区的可空的 TIMESTAMP 类型的 created\_at 和 updated\_at | | $table->tinyIncrements('id'); | 相当于自动递增 UNSIGNED TINYINT | | $table->tinyInteger('votes'); | 相当于 TINYINT | | $table->unsignedBigInteger('votes'); | 相当于 UNSIGNED BIGINT | | $table->unsignedDecimal('amount', 8, 2); | 相当于 UNSIGNED DECIMAL ,可以指定总位数和小数位数 | | $table->unsignedInteger('votes'); | 相当于 UNSIGNED INTEGER | | $table->unsignedMediumInteger('votes'); | 相当于 UNSIGNED MEDIUMINT | | $table->unsignedSmallInteger('votes'); | 相当于 UNSIGNED SMALLINT | | $table->unsignedTinyInteger('votes'); | 相当于 UNSIGNED TINYINT | | $table->uuid('id'); | 相当于 UUID | | $table->year('birth\_year'); | 相当于 YEAR | ## 字段修饰 除了上述列出的字段类型之外,还有几个可以在添加字段到数据库表时使用的「修饰符」。例如,如果要把字段设置为「可空」,你可以使用 nullable 方法: ``` Schema::table('users', function (Blueprint $table) { $table->string('email')->nullable(); }); ``` * 以下是所有可用的字段修饰符的列表。此列表不包括 索引修饰符: | Modifier | 描述 | | --- | --- | | \->after('column') | 将此字段放置在其它字段 「之后」 (MySQL) | | \->autoIncrement() | 将 INTEGER 类型的字段设置为自动递增的主键 | | \->charset('utf8mb4') | 指定一个字符集 (MySQL) | | \->collation('utf8mb4\_unicode\_ci') | 指定排序规则 (MySQL/PostgreSQL/SQL Server) | | \->comment('my comment') | 为字段增加注释 (MySQL/PostgreSQL) | | \->default($value) | 为字段指定 “默认” 值 | | \->first() | 将此字段放置在数据表的 「首位」 (MySQL) | | \->from($integer) | 给自增字段设置一个起始值 (MySQL / PostgreSQL) | | \->nullable($value = true) | 此字段允许写入 NULL 值(默认情况下) | | \->storedAs($expression) | 创建一个存储生成的字段 (MySQL) | | \->unsigned() | 设置 INTEGER 类型的字段为 UNSIGNED (MySQL) | | \->useCurrent() | 将 TIMESTAMP 类型的字段设置为使用 CURRENT\_TIMESTAMP 作为默认值 | | \->virtualAs($expression) | 创建一个虚拟生成的字段 (MySQL) | | \->generatedAs($expression) | 使用指定的序列生成标识列(PostgreSQL) | | \->always() | 定义序列值优先于标识列的输入 (PostgreSQL) |