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


本系列的一部分:
如何使用 Laravel 和 Docker Compose 在 PHP 中构建链接登陆页面

Laravel是一个开源 PHP 框架,它提供了一组工具和资源来构建现代 PHP 应用程序。在这个基于项目的教程系列中,您将使用 Laravel 框架构建一个Links Landing Page应用程序,使用由 Docker Compose 管理的容器化 PHP 开发环境。

最后,您将拥有一个使用 Laravel 构建并通过 Artisan 命令管理的单页网站,您可以在其中将相关链接分享给社交渠道和演示文稿上的受众。

Laravel 数据库迁移允许开发人员快速引导、销毁和重新创建应用程序的数据库,而无需登录数据库控制台或运行任何 SQL 查询。

在本指南中,您将创建一个数据库迁移来设置保存应用程序链接的表。为此,您将默认使用 Laravel 附带Artisan命令行工具。最后,您将能够根据需要多次销毁和重新创建数据库表,仅使用artisan命令即可。

首先,首先确保您位于应用程序的根目录中,并且您的 Docker Compose 开发环境已启动并正在运行:

  • cd ~/landing-laravel
  • docker-compose up -d
Output
landing-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 Migrations允许开发人员以编程方式创建、更新和销毁数据库表,作为数据库模式的版本控制系统。

要创建新的迁移,您可以运行make:migrationArtisan 命令,这将在 Laravel 应用程序的database/migrations文件夹中引导一个新类这个类将包含一个默认的样板代码。

请记住使用在安装了 PHPdocker-compose exec appapp服务容器上运行命令

  • docker-compose exec app php artisan make:migration create_links_table
Output
Created Migration: 2020_11_18_165241_create_links_table

请注意,迁移名称是根据当前日期和时间以及作为make:migration命令参数提供的名称生成的因此,您的迁移文件名会略有不同。

使用您选择的编辑器打开生成的迁移类:

  • nano database/migrations/2020_11_18_165241_create_links_table

接下来,更新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模式类型将产生一个tinyint无符号的字段来存储任何的值01

添加完这些字段后,请保存迁移文件。接下来,使用以下命令运行迁移:

  • docker-compose exec app php artisan migrate
Output
Migration 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表)。因为我们的演示应用程序不会使用这些功能,所以现在删除这些迁移是安全的;但是,如果您正在开发自己的应用程序并计划进一步开发它,您也可以选择保留它们。所有迁移文件都位于database/migrations应用程序的根文件夹中。

有关数据库迁移的更多详细信息,请参阅我们关于如何在 Laravel 中使用数据库迁移和播种器抽象数据库设置的指南

在本系列的下一部分中,您将创建一个自定义 Artisan 命令来列出、插入和删除应用程序链接表中的条目。

觉得文章有用?

点个广告表达一下你的爱意吧 !😁