goframe 博客分类文章模型文档 主要解决关联

goframe 博客文章模型文档

模型结构 (BlogArticleInfoRes)

BlogArticleInfoRes 结构体代表系统中的一篇博客文章,包含完整的元数据和内容管理功能。

type BlogArticleInfoRes struct {Id          uint         `orm:"id,primary" json:"id"`           // 唯一标识符Title       string       `orm:"title" json:"title"`             // 文章标题Content     string       `orm:"content" json:"content"`         // 文章内容Summary     string       `orm:"summary" json:"summary"`         // 文章摘要CategoryId  int          `orm:"category_id" json:"categoryId"`  // 分类IDTags        string       `orm:"tags" json:"tags"`               // 文章标签Cover       string       `orm:"cover" json:"cover"`             // 封面图片URLViewCount   int          `orm:"view_count" json:"viewCount"`    // 浏览次数Status      int          `orm:"status" json:"status"`           // 文章状态CreatedAt   *gtime.Time  `orm:"created_at" json:"createdAt"`   // 创建时间UpdatedAt   *gtime.Time  `orm:"updated_at" json:"updatedAt"`   // 更新时间IsTop       int          `orm:"is_top" json:"isTop"`           // 是否置顶Author      string       `orm:"author" json:"author"`           // 文章作者Category    *LinkedCategory `orm:"with:id=category_id" json:"category"` // 关联分类
}

字段说明

字段名类型JSON标签ORM标签描述
Iduintjson:“id”orm:“id,primary”文章唯一标识符
Titlestringjson:“title”orm:“title”文章标题
Contentstringjson:“content”orm:“content”文章主要内容
Summarystringjson:“summary”orm:“summary”文章简短摘要
CategoryIdintjson:“categoryId”orm:“category_id”文章分类ID
Tagsstringjson:“tags”orm:“tags”文章标签(逗号分隔)
Coverstringjson:“cover”orm:“cover”文章封面图片URL
ViewCountintjson:“viewCount”orm:“view_count”文章浏览次数
Statusintjson:“status”orm:“status”文章状态
CreatedAt*gtime.Timejson:“createdAt”orm:“created_at”文章创建时间戳
UpdatedAt*gtime.Timejson:“updatedAt”orm:“updated_at”最后更新时间戳
IsTopintjson:“isTop”orm:“is_top”是否置顶文章
Authorstringjson:“author”orm:“author”文章作者名称

关联关系说明

该模型通过 Category 字段与分类模型建立一对一关系:

Category *LinkedCategory `orm:"with:id=category_id" json:"category"`

ORM关联标签解析

  • with: 指定关联条件
  • id=category_id 表示当前模型的 category_id 字段与分类模型的 id 字段关联
  • 查询时自动进行数据库表连接

查询示例

func (s *sBlogArticle) GetArticleWithCategory(ctx context.Context, articleId uint) (*model.BlogArticleInfoRes, error) {var articleInfo *model.BlogArticleInfoReserr := dao.BlogArticle.Ctx(ctx).WithAll().Where("id", articleId).Scan(&articleInfo)if err != nil {return nil, err}// articleInfo.Category 将自动包含关联的分类信息return articleInfo, nil
}

状态值说明

  • 0: 草稿
  • 1: 已发布
  • 2: 审核中
  • 3: 已拒绝

置顶值说明

  • 0: 普通文章
  • 1: 置顶文章

该模型结构为博客文章管理提供了强大的基础,支持分类、标签和元数据跟踪等功能。

分类模型结构 (CmsCategoryInfoRes)

分类模型用于管理博客文章的分类信息,支持多级分类和SEO优化。

type CmsCategoryInfoRes struct {gmeta.Meta      `orm:"table:cms_category"`Id              uint        `orm:"id,primary" json:"id"`           // IDName            string      `orm:"name" json:"name"`               // 名称Type            string      `orm:"type" json:"type"`               // 类型ParentId        uint        `orm:"parent_id" json:"parentId"`      // 父IDSort            int         `orm:"sort" json:"sort"`               // 排序Status          string      `orm:"status" json:"status"`           // 状态Alias           string      `orm:"alias" json:"alias"`             // 别名CreatedAt       *gtime.Time `orm:"created_at" json:"createdAt"`    // 创建时间UpdatedAt       *gtime.Time `orm:"updated_at" json:"updatedAt"`    // 更新时间
}

分类字段说明

字段名类型描述
Iduint分类唯一标识符
Namestring分类名称
Typestring分类类型
ParentIduint父分类ID,用于构建分类层级
Sortint排序权重
Statusstring分类状态
Aliasstring分类别名,用于URL优化
CreatedAt*gtime.Time创建时间
UpdatedAt*gtime.Time更新时间

分类特性

  1. 多级分类

    • 通过 ParentId 支持无限级分类
    • 可以构建复杂的分类层级结构
  2. URL优化

    • 支持别名设置,优化URL结构
    • 更友好的SEO支持
  3. 状态管理

    • 可设置分类状态
    • 支持分类的启用/禁用管理

查询示例

// 获取分类及其子分类
func (s *sCmsCategory) GetCategoryWithChildren(ctx context.Context, categoryId uint) (*model.CmsCategoryInfoRes, error) {var category *model.CmsCategoryInfoReserr := dao.CmsCategory.Ctx(ctx).Where("id", categoryId).Scan(&category)if err != nil {return nil, err}// 获取子分类children, err := dao.CmsCategory.Ctx(ctx).Where("parent_id", categoryId).Order("sort asc").All()if err != nil {return nil, err}// 处理子分类...return category, nil
}// 获取分类树
func (s *sCmsCategory) GetCategoryTree(ctx context.Context) ([]*model.CmsCategoryInfoRes, error) {// 获取所有分类categories, err := dao.CmsCategory.Ctx(ctx).Order("sort asc").All()if err != nil {return nil, err}// 构建分类树return buildCategoryTree(categories), nil
}

与文章模型的关联

文章模型通过 CategoryId 关联到分类模型:

Category *CmsCategoryInfoRes `orm:"with:id=category_id" json:"category"`

这种关联实现:

  • 文章分类的快速查询
  • 分类文章的统计
  • 分类导航的构建
  • 文章的多级分类展示

状态说明

  • 0: 禁用
  • 1: 启用
  • 2: 待审核

该分类模型为博客系统提供了灵活的文章分类管理功能,支持多级分类结构和基本的分类属性管理。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/894451.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

MQTT知识

MQTT协议 MQTT 是一种基于发布/订阅模式的轻量级消息传输协议,专门针对低带宽和不稳定网络环境的物联网应用而设计,可以用极少的代码为联网设备提供实时可靠的消息服务。MQTT 协议广泛应用于物联网、移动互联网、智能硬件、车联网、智慧城市、远程医疗、…

Python(Pandas)数据分析学习

1.Pandas基本构成 引入Pandas import pandas as pd 1.Series 行 对应Excel中的一行数据,一维数据 定义Series # 第一个参数是具体数据 # 第二个参数的对应的索引下标 # 第三个参数的行名称 data pd.Series([1,2,3,4,5], index[a,b,c,d,e], namedata) print(d…

我用Ai学Android Jetpack Compose之Card

这篇学习一下Card。回答来自 通义千问。 我想学习Card,麻烦你介绍一下 当然可以!在 Jetpack Compose 中,Card 是一个非常常用的组件,用于创建带有阴影和圆角的卡片式布局。它可以帮助你轻松实现美观且一致的 UI 设计&#xff0c…

图漾相机——C++语言属性设置

文章目录 前言1.SDK API功能介绍1.1 Device组件下的API测试1.1.1 相机工作模式设置(TY_TRIGGER_PARAM_EX)1.1.2 TY_INT_FRAME_PER_TRIGGER1.1.3 TY_INT_PACKET_DELAY1.1.4 TY_INT_PACKET_SIZE1.1.5 TY_BOOL_GVSP_RESEND1.1.6 TY_BOOL_TRIGGER_OUT_IO1.1.…

STM32 TIM定时器配置

TIM简介 TIM(Timer)定时器 定时器可以对输入的时钟进行计数,并在计数值达到设定值时触发中断 16位计数器、预分频器、自动重装寄存器的时基单元,在72MHz计数时钟下可以实现最大59.65s的定时 不仅具备基本的定时中断功能&#xff…

pytorch实现基于Word2Vec的词嵌入

PyTorch 实现 Word2Vec(Skip-gram 模型) 的完整代码,使用 中文语料 进行训练,包括数据预处理、模型定义、训练和测试。 1. 主要特点 支持中文数据,基于 jieba 进行分词 使用 Skip-gram 进行训练,适用于小数…

【数据结构】_链表经典算法OJ(力扣/牛客第二弹)

目录 1. 题目1:返回倒数第k个节点 1.1 题目链接及描述 1.2 解题思路 1.3 程序 2. 题目2:链表的回文结构 2.1 题目链接及描述 2.2 解题思路 2.3 程序 1. 题目1:返回倒数第k个节点 1.1 题目链接及描述 题目链接: 面试题 …

pytorch基于 Transformer 预训练模型的方法实现词嵌入(tiansz/bert-base-chinese)

以下是一个完整的词嵌入(Word Embedding)示例代码,使用 modelscope 下载 tiansz/bert-base-chinese 模型,并通过 transformers 加载模型,获取中文句子的词嵌入。 from modelscope.hub.snapshot_download import snaps…

爬虫基础之爬取某站视频

目标网址:为了1/4螺口买小米SU7,开了一个月,它值吗?_哔哩哔哩_bilibili 本案例所使用到的模块 requests (发送HTTP请求)subprocess(执行系统命令)re (正则表达式操作)json (处理JSON数据) 需求分析: 视频的名称 F12 打开开发者工具 or 右击…

DeepSeek R1本地化部署 Ollama + Chatbox 打造最强 AI 工具

🌈 个人主页:Zfox_ 🔥 系列专栏:Linux 目录 一:🔥 Ollama 🦋 下载 Ollama🦋 选择模型🦋 运行模型🦋 使用 && 测试 二:🔥 Chat…

【linux网络(5)】传输层协议详解(下)

目录 前言1. TCP的超时重传机制2. TCP的流量控制机制3. TCP的滑动窗口机制4. TCP的拥塞控制机制5. TCP的延迟应答机制6. TCP的捎带应答机制7. 总结以及思考 前言 强烈建议先看传输层协议详解(上)后再看这篇文章. 上一篇文章讲到TCP协议为了保证可靠性而做的一些策略, 这篇文章…

DeepSeek 遭 DDoS 攻击背后:DDoS 攻击的 “千层套路” 与安全防御 “金钟罩”

当算力博弈升级为网络战争:拆解DDoS攻击背后的技术攻防战——从DeepSeek遇袭看全球网络安全新趋势 在数字化浪潮席卷全球的当下,网络已然成为人类社会运转的关键基础设施,深刻融入经济、生活、政务等各个领域。从金融交易的实时清算&#xf…

二、CSS笔记

(一)css概述 1、定义 CSS是Cascading Style Sheets的简称,中文称为层叠样式表,用来控制网页数据的表现,可以使网页的表现与数据内容分离。 2、要点 怎么找到标签怎么操作标签对象(element) 3、css的四种引入方式 3.1 行内式 在标签的style属性中设定CSS样式。这种方…

第三篇:模型压缩与量化技术——DeepSeek如何在边缘侧突破“小而强”的算力困局

——从算法到芯片的全栈式优化实践 随着AI应用向移动终端与物联网设备渗透,模型轻量化成为行业核心挑战。DeepSeek通过自研的“算法-编译-硬件”协同优化体系,在保持模型性能的前提下,实现参数量与能耗的指数级压缩。本文从技术原理、工程实…

C++编程语言:抽象机制:泛型编程(Bjarne Stroustrup)

泛型编程(Generic Programming) 目录 24.1 引言(Introduction) 24.2 算法和(通用性的)提升(Algorithms and Lifting) 24.3 概念(此指模板参数的插件)(Concepts) 24.3.1 发现插件集(Discovering a Concept) 24.3.2 概念与约束(Concepts and Constraints) 24.4 具体化…

DeepSeek-R1本地部署实践

一、下载安装 --Ollama Ollama是一个开源的 LLM(大型语言模型)服务工具,用于简化在本地运行大语言模型,降低使用大语言模型的门槛,使得大模型的开发者、研究人员和爱好者能够在本地环境快速实验、管理和部署最新大语言…

AI技术路线(marked)

人工智能(AI)是一个非常广泛且充满潜力的领域,它涉及了让计算机能够执行通常需要人类智能的任务,比如感知、推理、学习、决策等。人工智能的应用已经渗透到各行各业,从自动驾驶到医疗诊断,再到推荐系统和自…

【leetcode详解】T598 区间加法

598. 区间加法 II - 力扣(LeetCode) 思路分析 核心在于将问题转化, 题目不是要求最大整数本身,而是要求解最大整数的个数 结合矩阵元素的增加原理,我们将抽象问题转为可操作的方法,其实就是再找每组ops中…

【最后203篇系列】004 -Smarklink

说明 这个用来替代nginx。 最初是希望用nginx进行故障检测和负载均衡,花了很多时间,大致的结论是:nginx可以实现,但是是在商业版里。非得要找替代肯定可以搞出来,但是太麻烦了(即使是nginx本身的配置也很烦…

完全卸载mysql server步骤

1. 在控制面板中卸载mysql 2. 打开注册表,运行regedit, 删除mysql信息 HKEY_LOCAL_MACHINE-> SYSTEM->CurrentContolSet->Services->EventLog->Application->Mysql HKEY_LOCAL_MACHINE-> SYSTEM->CurrentContolSet->Services->Mysql …