如何使用迁移在 Laravel 中创建和管理数据库表

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 命令,以列出、插入和删除应用链接表中的条目。

Published At
Categories with 技术
comments powered by Disqus