本书未发布

3.2. 定义文档表结构

未匹配的标注

接下来,我们需要编辑迁移文件,定义文档表的结构。

步骤

  1. 打开database/migrations/xxxx_xx_xx_create_documents_table.php文件(文件名中的时间戳部分可能不同)。
  2. 修改up方法,添加所需的字段:
<?php

use Illuminate\Database\Migrations\Migration;
use Illuminate\Database\Schema\Blueprint;
use Illuminate\Support\Facades\Schema;

class CreateDocumentsTable extends Migration
{
    /**
     * 运行迁移
     *
     * @return void
     */
    public function up()
    {
        Schema::create('documents', function (Blueprint $table) {
            $table->id()->comment('文档ID'); // 文档ID
            $table->unsignedBigInteger('user_id')->comment('用户ID,关联到users表'); // 用户ID,关联到users表
            $table->string('name')->comment('文档名称'); // 文档名称
            $table->string('slug')->unique()->comment('文档slug,唯一'); // 文档slug,唯一
            $table->text('description')->nullable()->comment('文档描述,可为空'); // 文档描述,可为空
            $table->string('cover_image')->nullable()->comment('封面图片URL,可为空'); // 封面图片URL,可为空
            $table->boolean('is_chaptered')->default(false)->comment('是否分章节,默认否'); // 是否分章节,默认否
            $table->boolean('auto_numbering')->default(false)->comment('自动编号,默认否'); // 自动编号,默认否
            $table->boolean('auto_toc')->default(false)->comment('自动生成目录,默认否'); // 自动生成目录,默认否
            $table->boolean('is_public')->default(true)->comment('是否公开,默认是'); // 是否公开,默认是
            $table->string('password')->nullable()->comment('访问密码,可为空'); // 访问密码,可为空
            $table->timestamps(); // 创建和更新时间

            $table->foreign('user_id')->references('id')->on('users')->onDelete('cascade')->comment('外键约束,关联到users表的id字段,当用户被删除时,删除关联的文档'); // 外键约束,关联到users表的id字段,当用户被删除时,删除关联的文档
        });

        // 为表添加中文注释
        DB::statement("ALTER TABLE documents COMMENT = '文档表'");
    }

    /**
     * 回滚迁移
     *
     * @return void
     */
    public function down()
    {
        Schema::dropIfExists('documents'); // 删除文档表
    }
}

解释

  • 字段定义:为文档表定义了各种字段,包括文档名称、描述、封面、是否分章节等。
  • 外键user_id字段是外键,关联到用户表,表示文档的创建者。
  • comment方法:用于为表字段添加注释,table->comment('注释内容')
  • DB::statement方法:用于执行原生SQL语句,ALTER TABLE documents COMMENT = '文档表'为整个表添加注释。

好处

  • 结构清晰:定义文档表的结构,使数据库设计更加清晰。
  • 数据完整性:通过外键约束,确保数据的完整性。

本文章首发在 LearnKu.com 网站上。

上一篇 下一篇
《L03 构架 API 服务器》
你将学到如 RESTFul 设计风格、PostMan 的使用、OAuth 流程,JWT 概念及使用 和 API 开发相关的进阶知识。
《L01 基础入门》
我们将带你从零开发一个项目并部署到线上,本课程教授 Web 开发中专业、实用的技能,如 Git 工作流、Laravel Mix 前端工作流等。
讨论数量: 0
发起讨论 只看当前版本


暂无话题~