当前位置: 首页 > news >正文

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: 待审核

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

相关文章:

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

goframe 博客文章模型文档 模型结构 (BlogArticleInfoRes) BlogArticleInfoRes 结构体代表系统中的一篇博客文章,包含完整的元数据和内容管理功能。 type BlogArticleInfoRes struct {Id uint orm:"id,primary" json:"id" …...

【JavaWeb06】Tomcat基础入门:架构理解与基本配置指南

文章目录 🌍一. WEB 开发❄️1. 介绍 ❄️2. BS 与 CS 开发介绍 ❄️3. JavaWeb 服务软件 🌍二. Tomcat❄️1. Tomcat 下载和安装 ❄️2. Tomcat 启动 ❄️3. Tomcat 启动故障排除 ❄️4. Tomcat 服务中部署 WEB 应用 ❄️5. 浏览器访问 Web 服务过程详…...

安卓日常问题杂谈(一)

背景 关于安卓开发中,有很多奇奇怪怪的问题,有时候这个控件闪一下,有时候这个页面移动一下,这些对于快速开发中,去查询,都是很耗费时间的,因此,本系列文章,旨在记录安卓…...

Kitchen Racks 2

Kitchen Racks 2 吸盘置物架 Kitchen Racks-CSDN博客...

嵌入式学习笔记-杂七杂八

文章目录 连续波光纤耦合激光器工作原理主要特点应用领域设计考虑因素 数值孔径(Numerical Aperture,简称NA)数值孔径的定义数值孔径的意义数值孔径的计算示例数值孔径与光纤 四象限探测器检测目标方法四象限划分检测目标的步骤1. 数据采集2.…...

14-7C++STL的stack容器

(一)stack容器的入栈与出栈 (1)stack容器的简介 stack堆栈容器,“先进后出”的容器,且stack没有迭代器 (2)stack对象的默认构造 stack采用模板类实现,stack对象的默认…...

Vue 3 中的响应式系统:ref 与 reactive 的对比与应用

Vue 3 的响应式系统是其核心特性之一,它允许开发者以声明式的方式构建用户界面。Vue 3 引入了两种主要的响应式 API:ref 和 reactive。本文将详细介绍这两种 API 的用法、区别以及在修改对象属性和修改整个对象时的不同表现,并提供完整的代码…...

物业巡更系统助推社区管理智能化与服务模式创新的研究与应用

内容概要 在现代社区管理中,物业巡更系统扮演着至关重要的角色。首先,我们先来了解一下这个系统的概念与发展背景。物业巡更系统,顾名思义,是一个用来提升物业管理效率与服务质量的智能化工具。随着科技的发展,传统的…...

windows蓝牙驱动开发-生成和发送蓝牙请求块 (BRB)

以下过程概述了配置文件驱动程序生成和发送蓝牙请求块 (BRB) 应遵循的一般流程。 BRB 是描述要执行的蓝牙操作的数据块。 生成和发送 BRB 分配 IRP。 分配BRB,请调用蓝牙驱动程序堆栈导出以供配置文件驱动程序使用的 BthAllocateBrb 函数。;初始化 BRB…...

Linux网络之序列化和反序列化

目录 序列化和反序列化 上期我们学习了基于TCP的socket套接字编程接口,并实现了一个TCP网络小程序,本期我们将在此基础上进一步延伸学习,实现一个网络版简单计算器。 序列化和反序列化 在生活中肯定有这样一个情景。 上图大家肯定不陌生&a…...

linux设置mysql远程连接

首先保证服务器开放了mysql的端口 然后输入 mysql -u root -p 输入密码后即可进入mysql 然后再 use mysql; select user,host from user; update user set host"%" where user"root"; flush privileges; 再执行 select user,host from user; 即可看到变…...

react-native网络调试工具Reactotron保姆级教程

在React Native开发过程中,调试和性能优化是至关重要的环节。今天,就来给大家分享一个非常强大的工具——Reactotron,它就像是一个贴心的助手,能帮助我们更轻松地追踪问题、优化性能。下面就是一份保姆级教程哦! 一、…...

erase() 【删数函数】的使用

**2025 - 01 - 25 - 第 48 篇 【函数的使用】 作者(Author) 文章目录 earse() - 删除函数一. vector中的 erase1 移除单个元素2 移除一段元素 二. map 中的erase1 通过键移除元素2 通过迭代器移除元素 earse() - 删除函数 一. vector中的 erase vector 是一个动态数组&#x…...

性能测试丨内存火焰图 Flame Graphs

内存火焰图的基本原理 内存火焰图是通过分析堆栈跟踪数据生成的一种图形化表现,能够展示应用程序在运行时各个函数的内存占用情况。火焰图的宽度代表了函数占用的内存量,而火焰的高度则显示了函数在调用栈中的层级关系。通过这种可视化方式,…...

AIGC的企业级解决方案架构及成本效益分析

AIGC的企业级解决方案架构及成本效益分析 一,企业级解决方案架构 AIGC(人工智能生成内容)的企业级解决方案架构是一个多层次、多维度的复杂系统,旨在帮助企业实现智能化转型和业务创新。以下是总结的企业级AIGC解决方案架构的主要组成部分: 1. 技术架构 企业级AIGC解决方…...

Linux 入门 常用指令 详细版

欢迎来到指令小仓库!! 宝剑锋从磨砺出,梅花香自苦寒来 什么是指令? 指令和可执行程序都是可以被执行的-->指令就是可执行程序。 指令一定是在系统的每一个位置存在的。 1.ls指令 语法: ls [选项][目…...

【R语言】流程控制

R语言中&#xff0c;常用的流程控制函数有&#xff1a;repeat、while、for、if…else、switch。 1、repeat循环 repeat函数经常与 break 语句或 next 语句一起使用。 repeat ({x <- sample(c(1:7),1)message("x ", x, ",你好吗&#xff1f;")if (x …...

猿人学第一题 js混淆源码乱码

首先检查刷新网络可知&#xff0c;m参数被加密&#xff0c;这是一个ajax请求 那么我们直接去定位该路径 定位成功 观察堆栈之后可以分析出来这应该是一个混淆&#xff0c;我们放到解码平台去还原一下 window["url"] "/api/match/1";request function…...

计算机组成原理(2)王道学习笔记

数据的表示和运算 提问&#xff1a;1.数据如何在计算机中表示&#xff1f; 2.运算器如何实现数据的算术、逻辑运算&#xff1f; 十进制计数法 古印度人发明了阿拉伯数字&#xff1a;0&#xff0c;1&#xff0c;2&#xff0c;3&#xff0c;4&#xff0c;5&#xff0c;6&#…...

【AI日记】25.01.26

【AI论文解读】【AI知识点】【AI小项目】【AI战略思考】【AI日记】【读书与思考】 AI kaggle 比赛&#xff1a;Forecasting Sticker Sales 读书 书名&#xff1a;自由宪章 律己 AI&#xff1a;6 小时作息&#xff1a;00:30-8:30短视频&#xff1a;大于 1 小时读书和写作&a…...

Golang 面试经典题:map 的 key 可以是什么类型?哪些不可以?

Golang 面试经典题&#xff1a;map 的 key 可以是什么类型&#xff1f;哪些不可以&#xff1f; 在 Golang 的面试中&#xff0c;map 类型的使用是一个常见的考点&#xff0c;其中对 key 类型的合法性 是一道常被提及的基础却很容易被忽视的问题。本文将带你深入理解 Golang 中…...

Java-41 深入浅出 Spring - 声明式事务的支持 事务配置 XML模式 XML+注解模式

点一下关注吧&#xff01;&#xff01;&#xff01;非常感谢&#xff01;&#xff01;持续更新&#xff01;&#xff01;&#xff01; &#x1f680; AI篇持续更新中&#xff01;&#xff08;长期更新&#xff09; 目前2025年06月05日更新到&#xff1a; AI炼丹日志-28 - Aud…...

DIY|Mac 搭建 ESP-IDF 开发环境及编译小智 AI

前一阵子在百度 AI 开发者大会上&#xff0c;看到基于小智 AI DIY 玩具的演示&#xff0c;感觉有点意思&#xff0c;想着自己也来试试。 如果只是想烧录现成的固件&#xff0c;乐鑫官方除了提供了 Windows 版本的 Flash 下载工具 之外&#xff0c;还提供了基于网页版的 ESP LA…...

在Ubuntu中设置开机自动运行(sudo)指令的指南

在Ubuntu系统中&#xff0c;有时需要在系统启动时自动执行某些命令&#xff0c;特别是需要 sudo权限的指令。为了实现这一功能&#xff0c;可以使用多种方法&#xff0c;包括编写Systemd服务、配置 rc.local文件或使用 cron任务计划。本文将详细介绍这些方法&#xff0c;并提供…...

保姆级教程:在无网络无显卡的Windows电脑的vscode本地部署deepseek

文章目录 1 前言2 部署流程2.1 准备工作2.2 Ollama2.2.1 使用有网络的电脑下载Ollama2.2.2 安装Ollama&#xff08;有网络的电脑&#xff09;2.2.3 安装Ollama&#xff08;无网络的电脑&#xff09;2.2.4 安装验证2.2.5 修改大模型安装位置2.2.6 下载Deepseek模型 2.3 将deepse…...

OD 算法题 B卷【正整数到Excel编号之间的转换】

文章目录 正整数到Excel编号之间的转换 正整数到Excel编号之间的转换 excel的列编号是这样的&#xff1a;a b c … z aa ab ac… az ba bb bc…yz za zb zc …zz aaa aab aac…; 分别代表以下的编号1 2 3 … 26 27 28 29… 52 53 54 55… 676 677 678 679 … 702 703 704 705;…...

在 Spring Boot 中使用 JSP

jsp&#xff1f; 好多年没用了。重新整一下 还费了点时间&#xff0c;记录一下。 项目结构&#xff1a; pom: <?xml version"1.0" encoding"UTF-8"?> <project xmlns"http://maven.apache.org/POM/4.0.0" xmlns:xsi"http://ww…...

LangFlow技术架构分析

&#x1f527; LangFlow 的可视化技术栈 前端节点编辑器 底层框架&#xff1a;基于 &#xff08;一个现代化的 React 节点绘图库&#xff09; 功能&#xff1a; 拖拽式构建 LangGraph 状态机 实时连线定义节点依赖关系 可视化调试循环和分支逻辑 与 LangGraph 的深…...

面试高频问题

文章目录 &#x1f680; 消息队列核心技术揭秘&#xff1a;从入门到秒杀面试官1️⃣ Kafka为何能"吞云吐雾"&#xff1f;性能背后的秘密1.1 顺序写入与零拷贝&#xff1a;性能的双引擎1.2 分区并行&#xff1a;数据的"八车道高速公路"1.3 页缓存与批量处理…...

结构化文件管理实战:实现目录自动创建与归类

手动操作容易因疲劳或疏忽导致命名错误、路径混乱等问题&#xff0c;进而引发后续程序异常。使用工具进行标准化操作&#xff0c;能有效降低出错概率。 需要快速整理大量文件的技术用户而言&#xff0c;这款工具提供了一种轻便高效的解决方案。程序体积仅有 156KB&#xff0c;…...