31 lines
23 KiB
JavaScript
31 lines
23 KiB
JavaScript
import{_ as i,o as a,c as t,a2 as h}from"./chunks/framework.BbmSSMjL.js";const E=JSON.parse('{"title":"3.2 数据库建表","description":"","frontmatter":{},"headers":[],"relativePath":"zh/guide/database.md","filePath":"zh/guide/database.md"}'),k={name:"zh/guide/database.md"};function n(l,s,e,p,d,F){return a(),t("div",null,[...s[0]||(s[0]=[h(`<h1 id="_3-2-数据库建表" tabindex="-1">3.2 数据库建表 <a class="header-anchor" href="#_3-2-数据库建表" aria-label="Permalink to "3.2 数据库建表""></a></h1><div class="tip custom-block"><p class="custom-block-title">概述</p><p>建表是模块开发的第一步。所有表必须包含公共字段(id、软删除、审计字段),这是模型 Trait 自动处理的基础。</p></div><h2 id="公共字段规范" tabindex="-1">公共字段规范 <a class="header-anchor" href="#公共字段规范" aria-label="Permalink to "公共字段规范""></a></h2><p>所有业务表必须包含以下公共字段:</p><div class="language-sql vp-adaptive-theme"><button title="Copy Code" class="copy"></button><span class="lang">sql</span><pre class="shiki shiki-themes dracula-soft vitesse-light vp-code" tabindex="0"><code><span class="line"><span style="--shiki-dark:#7B7F8B;--shiki-light:#A0ADA0;">-- 公共字段(每个表都必须包含)</span></span>
|
||
<span class="line"><span style="--shiki-dark:#F6F6F4;--shiki-light:#393A34;">id </span><span style="--shiki-dark:#F286C4;--shiki-light:#AB5959;">INT</span><span style="--shiki-dark:#F286C4;--shiki-light:#AB5959;"> PRIMARY KEY</span><span style="--shiki-dark:#F6F6F4;--shiki-light:#393A34;"> AUTO_INCREMENT COMMENT </span><span style="--shiki-dark:#DEE492;--shiki-light:#B5695977;">'</span><span style="--shiki-dark:#E7EE98;--shiki-light:#B56959;">主键</span><span style="--shiki-dark:#DEE492;--shiki-light:#B5695977;">'</span><span style="--shiki-dark:#F6F6F4;--shiki-light:#393A34;">,</span></span>
|
||
<span class="line"><span style="--shiki-dark:#F6F6F4;--shiki-light:#393A34;">is_delete </span><span style="--shiki-dark:#F286C4;--shiki-light:#AB5959;">TINYINT</span><span style="--shiki-dark:#F6F6F4;--shiki-light:#393A34;">(</span><span style="--shiki-dark:#BF9EEE;--shiki-light:#2F798A;">1</span><span style="--shiki-dark:#F6F6F4;--shiki-light:#393A34;">) </span><span style="--shiki-dark:#F286C4;--shiki-light:#AB5959;">DEFAULT</span><span style="--shiki-dark:#BF9EEE;--shiki-light:#2F798A;"> 0</span><span style="--shiki-dark:#F6F6F4;--shiki-light:#393A34;"> COMMENT </span><span style="--shiki-dark:#DEE492;--shiki-light:#B5695977;">'</span><span style="--shiki-dark:#E7EE98;--shiki-light:#B56959;">软删除 0=正常 1=已删除</span><span style="--shiki-dark:#DEE492;--shiki-light:#B5695977;">'</span><span style="--shiki-dark:#F6F6F4;--shiki-light:#393A34;">,</span></span>
|
||
<span class="line"><span style="--shiki-dark:#F6F6F4;--shiki-light:#393A34;">create_user </span><span style="--shiki-dark:#F286C4;--shiki-light:#AB5959;">VARCHAR</span><span style="--shiki-dark:#F6F6F4;--shiki-light:#393A34;">(</span><span style="--shiki-dark:#BF9EEE;--shiki-light:#2F798A;">50</span><span style="--shiki-dark:#F6F6F4;--shiki-light:#393A34;">) </span><span style="--shiki-dark:#F286C4;--shiki-light:#AB5959;">DEFAULT</span><span style="--shiki-dark:#DEE492;--shiki-light:#B5695977;"> ''</span><span style="--shiki-dark:#F6F6F4;--shiki-light:#393A34;"> COMMENT </span><span style="--shiki-dark:#DEE492;--shiki-light:#B5695977;">'</span><span style="--shiki-dark:#E7EE98;--shiki-light:#B56959;">创建人</span><span style="--shiki-dark:#DEE492;--shiki-light:#B5695977;">'</span><span style="--shiki-dark:#F6F6F4;--shiki-light:#393A34;">,</span></span>
|
||
<span class="line"><span style="--shiki-dark:#F6F6F4;--shiki-light:#393A34;">create_time </span><span style="--shiki-dark:#F286C4;--shiki-light:#1E754F;">DATETIME</span><span style="--shiki-dark:#F6F6F4;--shiki-light:#393A34;"> COMMENT </span><span style="--shiki-dark:#DEE492;--shiki-light:#B5695977;">'</span><span style="--shiki-dark:#E7EE98;--shiki-light:#B56959;">创建时间</span><span style="--shiki-dark:#DEE492;--shiki-light:#B5695977;">'</span><span style="--shiki-dark:#F6F6F4;--shiki-light:#393A34;">,</span></span>
|
||
<span class="line"><span style="--shiki-dark:#F6F6F4;--shiki-light:#393A34;">update_user </span><span style="--shiki-dark:#F286C4;--shiki-light:#AB5959;">VARCHAR</span><span style="--shiki-dark:#F6F6F4;--shiki-light:#393A34;">(</span><span style="--shiki-dark:#BF9EEE;--shiki-light:#2F798A;">50</span><span style="--shiki-dark:#F6F6F4;--shiki-light:#393A34;">) </span><span style="--shiki-dark:#F286C4;--shiki-light:#AB5959;">DEFAULT</span><span style="--shiki-dark:#DEE492;--shiki-light:#B5695977;"> ''</span><span style="--shiki-dark:#F6F6F4;--shiki-light:#393A34;"> COMMENT </span><span style="--shiki-dark:#DEE492;--shiki-light:#B5695977;">'</span><span style="--shiki-dark:#E7EE98;--shiki-light:#B56959;">更新人</span><span style="--shiki-dark:#DEE492;--shiki-light:#B5695977;">'</span><span style="--shiki-dark:#F6F6F4;--shiki-light:#393A34;">,</span></span>
|
||
<span class="line"><span style="--shiki-dark:#F6F6F4;--shiki-light:#393A34;">update_time </span><span style="--shiki-dark:#F286C4;--shiki-light:#1E754F;">DATETIME</span><span style="--shiki-dark:#F6F6F4;--shiki-light:#393A34;"> COMMENT </span><span style="--shiki-dark:#DEE492;--shiki-light:#B5695977;">'</span><span style="--shiki-dark:#E7EE98;--shiki-light:#B56959;">更新时间</span><span style="--shiki-dark:#DEE492;--shiki-light:#B5695977;">'</span></span></code></pre></div><div class="warning custom-block"><p class="custom-block-title">为什么必须包含这些字段?</p><ul><li><code>is_delete</code>:<code>SoftDeleteFlagScope</code> 全局查询范围会自动过滤 <code>is_delete=1</code> 的数据(<code>SoftDeletesByFlag</code> Trait 注册)</li><li><code>create_user</code> / <code>create_time</code>:<code>HasAuditColumns</code> Trait 的 <code>creating</code> 事件自动填充</li><li><code>update_user</code> / <code>update_time</code>:<code>HasAuditColumns</code> Trait 的 <code>updating</code> 事件自动填充</li><li>表结构<strong>不含</strong> Laravel 默认的 <code>created_at</code> / <code>updated_at</code> 列,统一使用本项目的审计字段命名</li></ul></div><h2 id="建表-SQL-示例-example-模块-摘自-document-mysql-实际脚本-" tabindex="-1">建表 SQL 示例(example 模块,摘自 <code>document/mysql/</code> 实际脚本) <a class="header-anchor" href="#建表-SQL-示例-example-模块-摘自-document-mysql-实际脚本-" aria-label="Permalink to "建表 SQL 示例(example 模块,摘自 \`document/mysql/\` 实际脚本)""></a></h2><div class="language-sql vp-adaptive-theme"><button title="Copy Code" class="copy"></button><span class="lang">sql</span><pre class="shiki shiki-themes dracula-soft vitesse-light vp-code" tabindex="0"><code><span class="line"><span style="--shiki-dark:#F286C4;--shiki-light:#1E754F;">CREATE</span><span style="--shiki-dark:#F286C4;--shiki-light:#1E754F;"> TABLE</span><span style="--shiki-dark:#62E884;--shiki-light:#59873A;"> laravel_example</span><span style="--shiki-dark:#F6F6F4;--shiki-light:#393A34;"> (</span></span>
|
||
<span class="line"><span style="--shiki-dark:#7B7F8B;--shiki-light:#A0ADA0;"> -- 主键</span></span>
|
||
<span class="line"><span style="--shiki-dark:#F6F6F4;--shiki-light:#393A34;"> id </span><span style="--shiki-dark:#F286C4;--shiki-light:#AB5959;">INT</span><span style="--shiki-dark:#F286C4;--shiki-light:#1E754F;"> NOT NULL</span><span style="--shiki-dark:#F6F6F4;--shiki-light:#393A34;"> AUTO_INCREMENT COMMENT </span><span style="--shiki-dark:#DEE492;--shiki-light:#B5695977;">'</span><span style="--shiki-dark:#E7EE98;--shiki-light:#B56959;">主键ID</span><span style="--shiki-dark:#DEE492;--shiki-light:#B5695977;">'</span><span style="--shiki-dark:#F6F6F4;--shiki-light:#393A34;">,</span></span>
|
||
<span class="line"></span>
|
||
<span class="line"><span style="--shiki-dark:#7B7F8B;--shiki-light:#A0ADA0;"> -- 业务字段</span></span>
|
||
<span class="line"><span style="--shiki-dark:#F286C4;--shiki-light:#1E754F;"> name</span><span style="--shiki-dark:#F286C4;--shiki-light:#AB5959;"> VARCHAR</span><span style="--shiki-dark:#F6F6F4;--shiki-light:#393A34;">(</span><span style="--shiki-dark:#BF9EEE;--shiki-light:#2F798A;">255</span><span style="--shiki-dark:#F6F6F4;--shiki-light:#393A34;">) </span><span style="--shiki-dark:#F286C4;--shiki-light:#1E754F;">NOT NULL</span><span style="--shiki-dark:#F6F6F4;--shiki-light:#393A34;"> COMMENT </span><span style="--shiki-dark:#DEE492;--shiki-light:#B5695977;">'</span><span style="--shiki-dark:#E7EE98;--shiki-light:#B56959;">案例名称</span><span style="--shiki-dark:#DEE492;--shiki-light:#B5695977;">'</span><span style="--shiki-dark:#F6F6F4;--shiki-light:#393A34;">,</span></span>
|
||
<span class="line"><span style="--shiki-dark:#F6F6F4;--shiki-light:#393A34;"> avatar </span><span style="--shiki-dark:#F286C4;--shiki-light:#AB5959;">VARCHAR</span><span style="--shiki-dark:#F6F6F4;--shiki-light:#393A34;">(</span><span style="--shiki-dark:#BF9EEE;--shiki-light:#2F798A;">255</span><span style="--shiki-dark:#F6F6F4;--shiki-light:#393A34;">) </span><span style="--shiki-dark:#F286C4;--shiki-light:#1E754F;">NULL</span><span style="--shiki-dark:#F286C4;--shiki-light:#AB5959;"> DEFAULT</span><span style="--shiki-dark:#F286C4;--shiki-light:#1E754F;"> NULL</span><span style="--shiki-dark:#F6F6F4;--shiki-light:#393A34;"> COMMENT </span><span style="--shiki-dark:#DEE492;--shiki-light:#B5695977;">'</span><span style="--shiki-dark:#E7EE98;--shiki-light:#B56959;">案例图片</span><span style="--shiki-dark:#DEE492;--shiki-light:#B5695977;">'</span><span style="--shiki-dark:#F6F6F4;--shiki-light:#393A34;">,</span></span>
|
||
<span class="line"><span style="--shiki-dark:#F286C4;--shiki-light:#1E754F;"> type</span><span style="--shiki-dark:#F286C4;--shiki-light:#AB5959;"> INT</span><span style="--shiki-dark:#F286C4;--shiki-light:#1E754F;"> NULL</span><span style="--shiki-dark:#F286C4;--shiki-light:#AB5959;"> DEFAULT</span><span style="--shiki-dark:#BF9EEE;--shiki-light:#2F798A;"> 0</span><span style="--shiki-dark:#F6F6F4;--shiki-light:#393A34;"> COMMENT </span><span style="--shiki-dark:#DEE492;--shiki-light:#B5695977;">'</span><span style="--shiki-dark:#E7EE98;--shiki-light:#B56959;">案例类型:1-类型1 2-类型2 3-类型3 4-类型4</span><span style="--shiki-dark:#DEE492;--shiki-light:#B5695977;">'</span><span style="--shiki-dark:#F6F6F4;--shiki-light:#393A34;">,</span></span>
|
||
<span class="line"><span style="--shiki-dark:#F286C4;--shiki-light:#1E754F;"> status</span><span style="--shiki-dark:#F286C4;--shiki-light:#AB5959;"> INT</span><span style="--shiki-dark:#F286C4;--shiki-light:#1E754F;"> NULL</span><span style="--shiki-dark:#F286C4;--shiki-light:#AB5959;"> DEFAULT</span><span style="--shiki-dark:#BF9EEE;--shiki-light:#2F798A;"> 0</span><span style="--shiki-dark:#F6F6F4;--shiki-light:#393A34;"> COMMENT </span><span style="--shiki-dark:#DEE492;--shiki-light:#B5695977;">'</span><span style="--shiki-dark:#E7EE98;--shiki-light:#B56959;">案例状态:1-在用 2-停用</span><span style="--shiki-dark:#DEE492;--shiki-light:#B5695977;">'</span><span style="--shiki-dark:#F6F6F4;--shiki-light:#393A34;">,</span></span>
|
||
<span class="line"><span style="--shiki-dark:#F6F6F4;--shiki-light:#393A34;"> sort </span><span style="--shiki-dark:#F286C4;--shiki-light:#AB5959;">INT</span><span style="--shiki-dark:#F286C4;--shiki-light:#1E754F;"> NULL</span><span style="--shiki-dark:#F286C4;--shiki-light:#AB5959;"> DEFAULT</span><span style="--shiki-dark:#BF9EEE;--shiki-light:#2F798A;"> 0</span><span style="--shiki-dark:#F6F6F4;--shiki-light:#393A34;"> COMMENT </span><span style="--shiki-dark:#DEE492;--shiki-light:#B5695977;">'</span><span style="--shiki-dark:#E7EE98;--shiki-light:#B56959;">案例排序</span><span style="--shiki-dark:#DEE492;--shiki-light:#B5695977;">'</span><span style="--shiki-dark:#F6F6F4;--shiki-light:#393A34;">,</span></span>
|
||
<span class="line"></span>
|
||
<span class="line"><span style="--shiki-dark:#7B7F8B;--shiki-light:#A0ADA0;"> -- 公共字段(必须)</span></span>
|
||
<span class="line"><span style="--shiki-dark:#F6F6F4;--shiki-light:#393A34;"> create_user </span><span style="--shiki-dark:#F286C4;--shiki-light:#AB5959;">VARCHAR</span><span style="--shiki-dark:#F6F6F4;--shiki-light:#393A34;">(</span><span style="--shiki-dark:#BF9EEE;--shiki-light:#2F798A;">50</span><span style="--shiki-dark:#F6F6F4;--shiki-light:#393A34;">) </span><span style="--shiki-dark:#F286C4;--shiki-light:#1E754F;">NULL</span><span style="--shiki-dark:#F286C4;--shiki-light:#AB5959;"> DEFAULT</span><span style="--shiki-dark:#F286C4;--shiki-light:#1E754F;"> NULL</span><span style="--shiki-dark:#F6F6F4;--shiki-light:#393A34;"> COMMENT </span><span style="--shiki-dark:#DEE492;--shiki-light:#B5695977;">'</span><span style="--shiki-dark:#E7EE98;--shiki-light:#B56959;">创建人</span><span style="--shiki-dark:#DEE492;--shiki-light:#B5695977;">'</span><span style="--shiki-dark:#F6F6F4;--shiki-light:#393A34;">,</span></span>
|
||
<span class="line"><span style="--shiki-dark:#F6F6F4;--shiki-light:#393A34;"> create_time </span><span style="--shiki-dark:#F286C4;--shiki-light:#1E754F;">DATETIME</span><span style="--shiki-dark:#F286C4;--shiki-light:#1E754F;"> NULL</span><span style="--shiki-dark:#F286C4;--shiki-light:#AB5959;"> DEFAULT</span><span style="--shiki-dark:#F6F6F4;--shiki-light:#393A34;"> (</span><span style="--shiki-dark:#F286C4;--shiki-light:#1E754F;">now</span><span style="--shiki-dark:#F6F6F4;--shiki-light:#999999;">()</span><span style="--shiki-dark:#F6F6F4;--shiki-light:#393A34;">) COMMENT </span><span style="--shiki-dark:#DEE492;--shiki-light:#B5695977;">'</span><span style="--shiki-dark:#E7EE98;--shiki-light:#B56959;">创建时间</span><span style="--shiki-dark:#DEE492;--shiki-light:#B5695977;">'</span><span style="--shiki-dark:#F6F6F4;--shiki-light:#393A34;">,</span></span>
|
||
<span class="line"><span style="--shiki-dark:#F6F6F4;--shiki-light:#393A34;"> update_user </span><span style="--shiki-dark:#F286C4;--shiki-light:#AB5959;">VARCHAR</span><span style="--shiki-dark:#F6F6F4;--shiki-light:#393A34;">(</span><span style="--shiki-dark:#BF9EEE;--shiki-light:#2F798A;">50</span><span style="--shiki-dark:#F6F6F4;--shiki-light:#393A34;">) </span><span style="--shiki-dark:#F286C4;--shiki-light:#1E754F;">NULL</span><span style="--shiki-dark:#F286C4;--shiki-light:#AB5959;"> DEFAULT</span><span style="--shiki-dark:#F286C4;--shiki-light:#1E754F;"> NULL</span><span style="--shiki-dark:#F6F6F4;--shiki-light:#393A34;"> COMMENT </span><span style="--shiki-dark:#DEE492;--shiki-light:#B5695977;">'</span><span style="--shiki-dark:#E7EE98;--shiki-light:#B56959;">更新人</span><span style="--shiki-dark:#DEE492;--shiki-light:#B5695977;">'</span><span style="--shiki-dark:#F6F6F4;--shiki-light:#393A34;">,</span></span>
|
||
<span class="line"><span style="--shiki-dark:#F6F6F4;--shiki-light:#393A34;"> update_time </span><span style="--shiki-dark:#F286C4;--shiki-light:#1E754F;">DATETIME</span><span style="--shiki-dark:#F286C4;--shiki-light:#1E754F;"> NULL</span><span style="--shiki-dark:#F286C4;--shiki-light:#AB5959;"> DEFAULT</span><span style="--shiki-dark:#F6F6F4;--shiki-light:#393A34;"> (</span><span style="--shiki-dark:#F286C4;--shiki-light:#1E754F;">now</span><span style="--shiki-dark:#F6F6F4;--shiki-light:#999999;">()</span><span style="--shiki-dark:#F6F6F4;--shiki-light:#393A34;">) COMMENT </span><span style="--shiki-dark:#DEE492;--shiki-light:#B5695977;">'</span><span style="--shiki-dark:#E7EE98;--shiki-light:#B56959;">更新时间</span><span style="--shiki-dark:#DEE492;--shiki-light:#B5695977;">'</span><span style="--shiki-dark:#F6F6F4;--shiki-light:#393A34;">,</span></span>
|
||
<span class="line"><span style="--shiki-dark:#F6F6F4;--shiki-light:#393A34;"> is_delete </span><span style="--shiki-dark:#F286C4;--shiki-light:#AB5959;">INT</span><span style="--shiki-dark:#F286C4;--shiki-light:#1E754F;"> NULL</span><span style="--shiki-dark:#F286C4;--shiki-light:#AB5959;"> DEFAULT</span><span style="--shiki-dark:#BF9EEE;--shiki-light:#2F798A;"> 0</span><span style="--shiki-dark:#F6F6F4;--shiki-light:#393A34;"> COMMENT </span><span style="--shiki-dark:#DEE492;--shiki-light:#B5695977;">'</span><span style="--shiki-dark:#E7EE98;--shiki-light:#B56959;">删除标识:0-正常 1-已删除</span><span style="--shiki-dark:#DEE492;--shiki-light:#B5695977;">'</span><span style="--shiki-dark:#F6F6F4;--shiki-light:#393A34;">,</span></span>
|
||
<span class="line"></span>
|
||
<span class="line"><span style="--shiki-dark:#7B7F8B;--shiki-light:#A0ADA0;"> -- 索引</span></span>
|
||
<span class="line"><span style="--shiki-dark:#F286C4;--shiki-light:#AB5959;"> PRIMARY KEY</span><span style="--shiki-dark:#F6F6F4;--shiki-light:#393A34;"> (id),</span></span>
|
||
<span class="line"><span style="--shiki-dark:#F286C4;--shiki-light:#1E754F;"> INDEX</span><span style="--shiki-dark:#F6F6F4;--shiki-light:#393A34;"> idx_think_level_is_delete (is_delete),</span></span>
|
||
<span class="line"><span style="--shiki-dark:#F286C4;--shiki-light:#1E754F;"> INDEX</span><span style="--shiki-dark:#F6F6F4;--shiki-light:#393A34;"> idx_think_level_name (</span><span style="--shiki-dark:#F286C4;--shiki-light:#1E754F;">name</span><span style="--shiki-dark:#F6F6F4;--shiki-light:#393A34;">),</span></span>
|
||
<span class="line"><span style="--shiki-dark:#F286C4;--shiki-light:#1E754F;"> INDEX</span><span style="--shiki-dark:#F6F6F4;--shiki-light:#393A34;"> idx_think_level_status (</span><span style="--shiki-dark:#F286C4;--shiki-light:#1E754F;">status</span><span style="--shiki-dark:#F6F6F4;--shiki-light:#393A34;">)</span></span>
|
||
<span class="line"><span style="--shiki-dark:#F6F6F4;--shiki-light:#393A34;">) ENGINE</span><span style="--shiki-dark:#F286C4;--shiki-light:#AB5959;">=</span><span style="--shiki-dark:#F6F6F4;--shiki-light:#393A34;">InnoDB </span><span style="--shiki-dark:#F286C4;--shiki-light:#AB5959;">DEFAULT</span><span style="--shiki-dark:#F6F6F4;--shiki-light:#393A34;"> CHARSET</span><span style="--shiki-dark:#F286C4;--shiki-light:#AB5959;">=</span><span style="--shiki-dark:#F6F6F4;--shiki-light:#393A34;">utf8mb4 </span><span style="--shiki-dark:#F286C4;--shiki-light:#AB5959;">COLLATE=</span><span style="--shiki-dark:#F6F6F4;--shiki-light:#393A34;">utf8mb4_general_ci COMMENT</span><span style="--shiki-dark:#F286C4;--shiki-light:#AB5959;">=</span><span style="--shiki-dark:#DEE492;--shiki-light:#B5695977;">'</span><span style="--shiki-dark:#E7EE98;--shiki-light:#B56959;">案例演示表</span><span style="--shiki-dark:#DEE492;--shiki-light:#B5695977;">'</span><span style="--shiki-dark:#F6F6F4;--shiki-light:#393A34;">;</span></span></code></pre></div><div class="tip custom-block"><p class="custom-block-title">枚举注释写法</p><p>枚举字段的注释直接写成 <code>1-在用 2-停用</code> 格式,代码生成器据此自动解析选项(见 <a href="/zh/generator/parser.html">10.4 表结构解析引擎</a>)。</p></div><div class="tip custom-block"><p class="custom-block-title">表前缀</p><p>建表 SQL 中的表名<strong>含</strong> <code>laravel_</code> 前缀(与 <code>.env</code> 中 <code>DB_PREFIX</code> 一致);模型层的 <code>$table</code> 只写不含前缀的 <code>example</code>,查询时由 Laravel 自动拼接前缀。</p></div><h2 id="字段与-Service-属性对应关系" tabindex="-1">字段与 Service 属性对应关系 <a class="header-anchor" href="#字段与-Service-属性对应关系" aria-label="Permalink to "字段与 Service 属性对应关系""></a></h2><p>(对照 <code>app/Services/ExampleService.php</code> 实际声明)</p><table tabindex="0"><thead><tr><th>数据库字段</th><th>类型</th><th>Service 属性</th><th>说明</th></tr></thead><tbody><tr><td><code>name</code></td><td>VARCHAR(255)</td><td><code>pageLikeFields</code> + <code>uniqueFields</code></td><td>LIKE 模糊搜索 + 名称唯一校验</td></tr><tr><td><code>status</code></td><td>INT</td><td><code>pageEqFields</code> + <code>serializeMaps</code></td><td>精确匹配 + 字典翻译(<code>example_status</code> → 补 <code>statusText</code>)</td></tr><tr><td><code>type</code></td><td>INT</td><td>—(普通表单/列表字段)</td><td>注释含选项,前端按 <code>columns.ts</code> 渲染</td></tr><tr><td><code>sort</code></td><td>INT</td><td>—(默认排序用基类 <code>pageOrderBy</code>)</td><td>排序值</td></tr><tr><td><code>avatar</code></td><td>VARCHAR(255)</td><td>—(前端 <code>UploadImg</code> 直传)</td><td>图片路径字段</td></tr></tbody></table><h2 id="设计检查清单" tabindex="-1">设计检查清单 <a class="header-anchor" href="#设计检查清单" aria-label="Permalink to "设计检查清单""></a></h2><table tabindex="0"><thead><tr><th>检查项</th><th>说明</th></tr></thead><tbody><tr><td>公共字段齐全</td><td><code>id</code> / <code>is_delete</code> / 四个审计字段</td></tr><tr><td>字段小写下划线</td><td><code>category_id</code>、<code>create_time</code></td></tr><tr><td>枚举字段配字典</td><td>字段注释写明字典编码,便于生成器提取</td></tr><tr><td>模糊搜索字段建索引</td><td>LIKE 查询字段建议加索引</td></tr><tr><td>需要唯一性的字段</td><td>在 Service 配置 <code>uniqueFields</code>(不是数据库唯一索引,软删除场景更安全)</td></tr></tbody></table><h2 id="常见字段类型参考" tabindex="-1">常见字段类型参考 <a class="header-anchor" href="#常见字段类型参考" aria-label="Permalink to "常见字段类型参考""></a></h2><table tabindex="0"><thead><tr><th>用途</th><th>推荐类型</th><th>示例</th></tr></thead><tbody><tr><td>主键</td><td><code>INT AUTO_INCREMENT</code></td><td><code>id INT PRIMARY KEY AUTO_INCREMENT</code></td></tr><tr><td>外键</td><td><code>INT DEFAULT 0</code></td><td><code>category_id INT DEFAULT 0</code></td></tr><tr><td>短文本</td><td><code>VARCHAR(n)</code></td><td><code>name VARCHAR(200)</code></td></tr><tr><td>长文本</td><td><code>TEXT</code></td><td><code>content TEXT</code></td></tr><tr><td>布尔值</td><td><code>TINYINT(1)</code></td><td><code>status TINYINT(1) DEFAULT 1</code></td></tr><tr><td>整数</td><td><code>INT</code></td><td><code>sort INT DEFAULT 0</code></td></tr><tr><td>日期时间</td><td><code>DATETIME</code></td><td><code>create_time DATETIME</code></td></tr><tr><td>文件路径</td><td><code>VARCHAR(500)</code></td><td><code>avatar VARCHAR(500)</code></td></tr></tbody></table><div class="tip custom-block"><p class="custom-block-title">TIP</p><p>本项目 <code>database/migrations/</code> 为空,建表后<strong>直接执行 SQL</strong>(或在已有数据库上 <code>ALTER TABLE</code>),无需迁移。多数据库脚本见 <a href="/zh/quickstart/database-init.html">2.5 数据库初始化</a>。</p></div>`,18)])])}const c=i(k,[["render",n]]);export{E as __pageData,c as default};
|