Laravel迁移示例教程。
本教程将一步一步地讲解如何在现有数据库表中添加单个或多个列。
开发迭代过程中,我们时常需要在数据库表中添加新列。今天将向您展示如何使用Laravel migration将新的列或列添加到现有表中。
将通过以下三种方面介绍Laravel Migration的使用:
- 在现有表中添加单列
- 在现有表中添加多列
- 可用列类型
1. 在现有表中添加单列
a) 使用Laravel Migration迁移将新列添加到现有表中。打开终端,使用以下命令创建迁移文件:
php artisan make:migration add_type_to_notes
它将在迁移文件夹中创建一个add_type_to_notes文件。应该是这样的-
Laravel Migration在现有表中添加单列
b) 执行迁移命令:
在终端中运行下面给定的命令。它会向您的表中添加一个新列:
php artisan migrate
现在可以转到数据库表,查看表中是否有新列。已使用迁移命令成功添加.
2. 在现有表中添加多列
a) 如果需要添加多个列,则需要在终端中添加以下命令:
php artisan make:migration add_multiple_column_to_notes
b) 上面的命令将创建一个新的迁移文件,因此需要转到数据库/迁移文件夹,打开文件并根据您的需要添加列:
Laravel Migration在现有表中添加多列
c) 最后,运行下面的命令在数据库表中添加列
php artisan migrate
3. 可用列类型介绍
Laravel schema builder提供了多种列类型,您可以在构建表时指定这些类型:
命令 | 介绍 |
---|---|
$table->bigIncrements('id'); | 自动递增无符号BIGINT(主键)等效列。 |
$table->bigInteger('votes'); | BIGINT等效列。 |
$table->binary('data'); | BLOB等效列 |
$table->boolean('confirmed'); | BOOLEAN 等效列 |
$table->char('name', 100); | CHAR equivalent column with an optional length. |
$table->date('created_at'); | DATE 等效列 |
$table->dateTime('created_at'); | DATETIME 等效列 |
$table->dateTimeTz('created_at'); | 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'); | Auto-incrementing UNSIGNED INTEGER (primary key) 等效列 |
$table->integer('votes'); | INTEGER 等效列 |
$table->ipAddress('visitor'); | IP address 等效列 |
$table->json('options'); | JSON 等效列 |
$table->jsonb('options'); | JSONB 等效列 |
$table->lineString('positions'); | LINESTRING 等效列 |
$table->longText('description'); | LONGTEXT 等效列 |
$table->macAddress('device'); | MAC address 等效列 |
$table->mediumIncrements('id'); | 自动递增无符号整型(主键)等效列 |
$table->mediumInteger('votes'); | MEDIUMINT 等效列 |
$table->mediumText('description'); | MEDIUMTEXT 等效列 |
$table->morphs('taggable'); | 添加taggable_id UNSIGNED BIGINT和taggable_type VARCHAR等效列。 |
$table->uuidMorphs('taggable'); | 添加taggable_id UNSIGNED BIGINT和taggable_type VARCHAR等效列。 |
$table->multiLineString('positions'); | 多行等效列。 |
$table->multiPoint('positions'); | MULTIPOINT 等效列 |
$table->multiPolygon('positions'); | MULTIPOLYGON 等效列 |
$table->nullableMorphs('taggable'); | 添加morfs()列,列可为空。 |
$table->nullableUuidMorphs('taggable'); | 添加UuidMorps()列,列可为空。 |
$table->nullableTimestamps(); | Alias of timestamps() method. |
$table->point('position'); | POINT 等效列 |
$table->polygon('positions'); | POLYGON 等效列 |
$table->rememberToken(); | 添加一个可为空的remember_token VARCHAR(100)等效列 |
$table->set('flavors', ['strawberry', 'vanilla']); | SET 等效列 |
$table->smallIncrements('id'); | 自动递增无符号SMALLINT(主键)等效列 |
$table->smallInteger('votes'); | SMALLINT 等效列 |
$table->softDeletes(); | 软删除的TIMESTAMP 等效列 |
$table->softDeletesTz(); | 软删除的TIMESTAMP(带时区) 等效列 |
$table->string('name', 100); | 具有可选长度的VARCHAR等效列。 |
$table->text('description'); | TEXT 等效列 |
$table->time('sunrise'); | TIME 等效列 |
$table->timeTz('sunrise'); | TIME (with timezone) 等效列 |
$table->timestamp('added_on'); | TIMESTAMP 等效列 |
$table->timestampTz('added_on'); | TIMESTAMP (带时区) 等效列 |
$table->timestamps(); | 添加可为空的created_at和updated_at TIMESTAMP等效列。 |
$table->timestampsTz(); | 添加可为空的created_at和updated_at TIMESTAMP(带时区)等效列。 |
$table->tinyIncrements('id'); | 自动递增无符号TINYINT(主键)等效列 |
$table->tinyInteger('votes'); | TINYINT 等效列 |
$table->unsignedBigInteger('votes'); | UNSIGNED BIGINT 等效列 |
$table->unsignedDecimal('amount', 8, 2); | U具有精度(总位数)和小数位数(十进制位数)的无符号十进制等效列。 |
$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 等效列 |
4. 结论
Larave Magration 您在此了解了如何给已存在的表添加单个或多个新列。
以后会逐渐更新其他Laravel命令的使用。
网友评论