Laravel 数据库迁移允许开发人员快速启动、破坏和重建应用程序的数据库,而无需登录数据库控制台或运行任何 SQL 查询。
在本指南中,您将创建一个数据库迁移,以设置您将存储应用链接的表格。 为了做到这一点,您将使用 Artisan 命令行工具,该工具与 Laravel 默认提供。
要开始,请先确保您位于应用程序的 root 目录中,并且您的 Docker Compose 开发环境已启动并运行:
1cd ~/landing-laravel
2docker-compose up -d
1[secondary_label Output]
2landing-laravel_app_1 is up-to-date
3landing-laravel_nginx_1 is up-to-date
4landing-laravel_db_1 is up-to-date
接下来,创建数据库迁移以设置链接
表。 Laravel Migrations允许开发人员编程创建、更新和破坏数据库表,作为数据库方案的版本控制系统。
要创建一个新的迁移,您可以运行make:migration
Artisan 命令,在您的 Laravel 应用程序中,在数据库/迁移
文件夹中启动一个新的类。
请记住使用docker-compose exec app
在安装PHP的app
服务容器上运行命令:
1docker-compose exec app php artisan make:migration create_links_table
1[secondary_label Output]
2Created Migration: 2020_11_18_165241_create_links_table
<$>[注]
** 注意:** 迁移名称是基于当前日期和时间生成的,并作为对 make:migration
命令的参数提供的名称。
1find ~/landing-laravel/database/migrations -name '*create_links_table.php'
1[secondary_label Output]
2/home/sammy/landing-laravel/database/migrations/2020_11_18_165241_create_links_table.php
美元
使用您选择的编辑器打开生成的迁移类:
1nano database/migrations/2020_11_18_165241_create_links_table.php
接下来,更新升级
方法,以包括您需要存储应用数据的表列。
所突出的值是需要添加的唯一行,所以如果您喜欢,您也可以只复制这些突出的行,并将其纳入您的Schema::create
定义:
1[label database/migrations/2020_10_12_171200_create_links_table.php]
2<?php
3
4use Illuminate\Database\Migrations\Migration;
5use Illuminate\Database\Schema\Blueprint;
6use Illuminate\Support\Facades\Schema;
7
8class CreateLinksTable extends Migration
9{
10 /**
11 * Run the migrations.
12 *
13 * @return void
14 */
15 public function up()
16 {
17 Schema::create('links', function (Blueprint $table) {
18 $table->id();
19 $table->string('url', 200);
20 $table->text('description');
21 $table->boolean('enabled')->default(true);
22 $table->timestamps();
23 });
24 }
25
26 /**
27 * Reverse the migrations.
28 *
29 * @return void
30 */
31 public function down()
32 {
33 Schema::dropIfExists('links');
34 }
35}
除了使用 Artisan 命令自动生成的表定义中包含的默认字段外,此表中还包括三个新字段:
url
: 一个字符串字段来保存链接的 URL.描述
: 一个文本字段来保存链接的描述.enabled
: 一个字段来存储链接的状态,无论它是否已启用。
当您完成添加这些字段时,保存迁移文件。
1docker-compose exec app php artisan migrate
1[secondary_label Output]
2Migration table created successfully.
3Migrating: 2014_10_12_000000_create_users_table
4Migrated: 2014_10_12_000000_create_users_table (152.46ms)
5Migrating: 2014_10_12_100000_create_password_resets_table
6Migrated: 2014_10_12_100000_create_password_resets_table (131.12ms)
7Migrating: 2019_08_19_000000_create_failed_jobs_table
8Migrated: 2019_08_19_000000_create_failed_jobs_table (101.06ms)
9Migrating: 2020_11_18_165241_create_links_table
10Migrated: 2020_11_18_165241_create_links_table (60.20ms)
您会注意到其他迁移也与create_links_table
一起执行,这是因为默认的Laravel安装包括用户迁移(具有用户
表和password_resets
表),以及排队工作(具有failed_jobs
表)。
有关数据库迁移的详细信息,请参阅我们关于如何使用数据库迁移和种子在Laravel中抽象数据库设置的指南(https://andsky.com/tech/tutorials/how-to-use-database-migrations-and-seeders-to-abstract-database-setup-in-laravel)。
在本系列的下一部分中,您将创建一个自定义的 Artisan 命令,以列出、插入和删除应用链接表中的条目。