使用数据库迁移(migration) 功能进行数据库设计和版本控制


本章节目录

    关于 Laravel 的数据库迁移(Migration)功能

    在过往的开发中,我们通常会使用 SQL 语句来搞定一切 DB 需求。在 Laravel 框架中,可以使用数据库迁移来完成数据库的管理,可以对数据库版本进行回滚操作,也方便了多人团队协作管理数据库结构。

    Laravel 的 Migration 迁移功能,支持数据库结构设计、回滚,支持表的新增、重命名和删除,支持字段的创建、修饰、修改、删除,支持索引的创建、重命名、删除以及外键约束。

    具体的说明及命令请参考 Laravel 官方文档关于数据库迁移的章节

    英文版本:https://laravel.com/docs/8.x/pagination

    新建留言表(feedback)的迁移文件

    在项目目录下执行迁移命令:php artisan make:migration create_feedback_table --create=feedback,命令行会返回 Created Migration: 的提示,依次展开 database/migrations 目录,会发现系统已经自动为我们创建了以年月日时分秒为前缀的 PHP 迁移文件。

    文件中默认有 up() 和 down() 两个方法,up() 方法在执行(php artisan migrate)迁移命令时运行,down() 方法在执行回滚(php artisan migrate:rollback)迁移命令时运行。

    在迁移文件中设计数据库

    在生成的迁移文件中,artisan 已经帮我们生成了创建表和删除表的代码,我们只需要在 up() 方法中的 Schema::create(‘feedback’, fun… 里进行数据库的字段设计即可。示例如下:

    public function up()
    {
        Schema::create('feedback', function (Blueprint $table) {
            // 默认生成的自增 ID 字段
            $table->id();
            // 留言者称呼
            $table->string("name", 20)->nullable()->comment("留言者称呼");
            // 手机号码
            $table->string("phone", 20)->nullable()->comment("手机号码");
            // 标题
            $table->string("title")->nullable()->comment("留言标题");
            // 内容
            $table->text("content")->nullable()->comment("留言内容");
            // 软删除标识字段
            $table->softDeletes();
            // Schema 自动帮我们维护新增时间和更新时间
            $table->timestamps();
        });
    }
    

    softDeletes() 是软删除方法,即非物理删除,该方法会自动帮我们生成一个名为 deleted_at 字段,用于标识记录是否被删除。

    timestamps() 是记录新增和更新时间辅助方法,该方法会自动帮我们生成一个名为 created_at 的字段,用于存储记录的创建时间,生成一个名为 updated_at 的字段,用于存储记录的更新时间。

    这些字段的使用,需要使用 Eloquent ORM 进行数据库交互,否则需要我们手工进行维护。在后边的创建 Model 章节,我们会讲到。

    注意:建议在设计数据库时,做好字段的注释工作。在 Laravel 的数据库迁移中可以使用 comment 修饰符来完成该操作。

    运行迁移

    执行命令:php artisan migrate

    注意:执行前,可以删除 database/migrations 文件夹下的 users、password_resets 和 failed_jobs 三个迁移文件,本课程还没使用到。

    打开数据库会看到新增的数据库表。

    如图所示,我们要养成良好的注释习惯,利人利己。


    请先 登录
    审核后显示
    讨论记录(0 条)
    暂时还没有讨论

    © 2024 麻辣讲 豫ICP备19017310号-2