如何使用迁移在Laravel中创建和管理数据库表
Laravel 数据库迁移 允许开发人员快速引导、销毁和重新创建应用程序的数据库,而无需登录数据库控制台或运行任何 SQL 查询。
在本指南中,您将创建一个数据库迁移以设置保存应用程序链接的表。 为此,您将使用 Laravel 默认附带的 Artisan 命令行工具。 最后,您将能够只使用 artisan
命令多次销毁和重新创建数据库表。
首先,请确保您位于应用程序的根目录中,并且您的 Docker Compose 开发环境已启动并正在运行:
cd ~/landing-laravel docker-compose up -d
Outputlanding-laravel_app_1 is up-to-date landing-laravel_nginx_1 is up-to-date landing-laravel_db_1 is up-to-date
接下来,创建数据库迁移以设置 links
表。 Laravel 迁移 允许开发人员以编程方式创建、更新和销毁数据库表,作为数据库模式的版本控制系统。
要创建一个新的迁移,您可以运行 make:migration
Artisan 命令,这将在您的 Laravel 应用程序中引导一个新类,位于 database/migrations
文件夹中。 这个类将包含一个默认的样板代码。
记得使用 docker-compose exec app
在安装 PHP 的 app
服务容器上运行命令:
docker-compose exec app php artisan make:migration create_links_table
OutputCreated Migration: 2020_11_18_165241_create_links_table
Note: The migration name is generated based on the current date and time, and the name provided as an argument to the make:migration
command. For that reason, your migration file name will differ slightly. For the exact file name, check with the following:
find ~/landing-laravel/database/migrations -name '*create_links_table.php'
Output/home/sammy/landing-laravel/database/migrations/2020_11_18_165241_create_links_table.php
使用您选择的编辑器打开生成的迁移类:
nano database/migrations/2020_11_18_165241_create_links_table.php
接下来,更新 up
方法以包含存储应用程序数据所需的表列。
将迁移类的当前内容替换为以下代码。 突出显示的值是唯一需要添加的行,因此如果您愿意,也可以只复制那些突出显示的行并将它们包含到 Schema::create
定义中:
数据库/迁移/2020_10_12_171200_create_links_table.php
<?php use Illuminate\Database\Migrations\Migration; use Illuminate\Database\Schema\Blueprint; use Illuminate\Support\Facades\Schema; class CreateLinksTable extends Migration { /** * Run the migrations. * * @return void */ public function up() { Schema::create('links', function (Blueprint $table) { $table->id(); $table->string('url', 200); $table->text('description'); $table->boolean('enabled')->default(true); $table->timestamps(); }); } /** * Reverse the migrations. * * @return void */ public function down() { Schema::dropIfExists('links'); } }
除了包含在使用 Artisan 命令自动生成的表定义中的默认字段之外,您还在此表中包含三个新字段:
url
:用于保存链接 URL 的字符串字段。description
:用于保存链接描述的文本字段。enabled
:存储链接状态的字段,无论是否启用。boolean
Schema 类型将生成一个tinyint
无符号字段来存储0
或1
的值。
添加完这些字段后,保存您的迁移文件。 接下来,使用以下命令运行迁移:
docker-compose exec app php artisan migrate
OutputMigration table created successfully. Migrating: 2014_10_12_000000_create_users_table Migrated: 2014_10_12_000000_create_users_table (152.46ms) Migrating: 2014_10_12_100000_create_password_resets_table Migrated: 2014_10_12_100000_create_password_resets_table (131.12ms) Migrating: 2019_08_19_000000_create_failed_jobs_table Migrated: 2019_08_19_000000_create_failed_jobs_table (101.06ms) Migrating: 2020_11_18_165241_create_links_table Migrated: 2020_11_18_165241_create_links_table (60.20ms)
您会注意到其他迁移也与 create_links_table
一起执行。 这是因为默认的 Laravel 安装带有用户迁移(带有 users
表和 password_resets
表)和排队作业(带有 failed_jobs
表)。 Because your demo application won’t use these features, it is safe to remove those migrations now; however, you may also opt to leave them in place if you are working on an application of your own and you plan on developing it further. 所有迁移文件都位于应用程序根文件夹中的 database/migrations
。
有关数据库迁移的更多详细信息,请参阅我们的指南 如何使用数据库迁移和播种器在 Laravel 中抽象数据库设置。
在本系列的下一部分中,您将创建一个自定义 Artisan 命令来列出、插入和删除应用程序链接表中的条目。