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

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" …...

人工智能在医疗领域的应用有哪些?

人工智能在医疗领域的应用十分广泛,涵盖了诊断、治疗、药物研发等多个环节,以下是一些主要的应用: 医疗影像诊断 疾病识别:通过分析 X 光、CT、MRI 等影像,人工智能算法能够识别出肿瘤、结节、骨折等病变,…...

学习第七十六行

提高github下载速度方法 1.github转码云 2.https://github.com.cnpmjs.org com后面加东西 对于面试笔试,最好方法刷力扣,1000题包进大厂的...

C#System.Threading.Timer定时器意外回收注意事项

System.Threading.Timer定时器使用时会出现意外回收的情况。具体解释如下: 只要在使用 Timer,就必须保留对它的引用。对于任何托管对象,如果没有对 Timer 的引用,计时器会被垃圾回收。即使 Timer 仍处在活动状态,也会被回收。 实例对比测试 实例 定义两个类,其中一个…...

若依基本使用及改造记录

若依框架想必大家都了解得不少,不可否认这是一款及其简便易用的框架。 在某种情况下(比如私活)使用起来可谓是快得一匹。 在这里小兵结合自身实际使用情况,记录一下我对若依框架的使用和改造情况。 一、源码下载 前往码云进行…...

Java基础教程(007):方法的重载与方法的练习

文章目录 6.5 方法的重载6.6 方法练习数组遍历数组最大值 6.5 方法的重载 在 Java 中,方法的重载是指在同一个类中定义多个方法,这些方法具有相同的名称,但参数列表不同。方法的重载是一种实现多态的方式,允许一个方法名以不同的…...

Day27-【13003】短文,线性表两种基本实现方式空间效率、时间效率比较?兼顾优点的静态链表是什么?如何融入空闲单元链表来解决问题?

文章目录 本次内容总览第四节,两种基本实现方式概览两种基本实现方式的比较元素个数n大于多少时,使用顺序表存储的空间效率才会更高?时间效率比较?*、访问操作,也就是读运算,读操作1、插入,2、删…...

Linux 小火车

1.添加epel软件源 2.安装sl 3. 安装完成后输入: sl...

论文笔记(六十三)Understanding Diffusion Models: A Unified Perspective(四)

Understanding Diffusion Models: A Unified Perspective(四) 文章概括学习扩散噪声参数(Learning Diffusion Noise Parameters)三种等效的解释(Three Equivalent Interpretations) 文章概括 引用&#xf…...

python 统计相同像素值个数

目录 python 统计相同像素值个数 最大值附近的值 python 统计相同像素值个数 import cv2 import numpy as np import time from collections import Counter# 读取图像 image cv2.imread(mask16.jpg)# 将图像转换为灰度图像 gray_image cv2.cvtColor(image, cv2.COLOR_BGR2…...

YOLOv8:目标检测与实时应用的前沿探索

随着深度学习和计算机视觉技术的迅速发展,目标检测(Object Detection)一直是研究热点。YOLO(You Only Look Once)系列模型作为业界广受关注的目标检测框架,凭借其高效、实时的特点,一直迭代更新…...

docker配置mysql并使用mysql connector cpp编程

mysql 配置mysql使用docker 这里使用docker安装了,比较简洁,不想使用了直接就可以把容器删掉,首先获取下镜像,如下命令 docker pull container-registry.oracle.com/mysql/community-server这里直接默认使用最新版本的mysql了 …...

go理论知识——Go Channel 笔记 [特殊字符]

go理论知识——Go Channel 笔记 📝 1. 基本概念 🧠 1.1 Channel 是什么? Channel 是 Go 语言中用于在不同 Goroutine 之间进行通信的机制。Channel 是类型安全的,意味着你只能发送和接收特定类型的数据。 1.2 Channel 的创建 …...

论文阅读笔记:MambaOut: Do We Really Need Mamba for Vision?

论文阅读笔记:MambaOut: Do We Really Need Mamba for Vision? 1 背景2 创新点3 方法4 模块4.1 Mamba适合什么任务4.2 视觉识别任务是否有很长的序列4.3 视觉任务是否需要因果token混合模式4.4 关于Mamba对于视觉的必要性假设 5 效果 论文:https://arxi…...

games101-(3/4)变换

缩放: 对称 切变 旋转 考虑(1.0)这个点 同理考虑(0,1)点即可 齐次方程 考虑在二维的坐标点后面增加一个维度 所有的仿射变换都可以写成齐次坐标的形式 a b c d 是线性变换 tx ty 是平移; …...

【Linux】磁盘

没有被打开的文件 文件在磁盘中的存储 认识磁盘 磁盘的存储构成 磁盘的效率 与磁头运动频率有关。 磁盘的逻辑结构 把一面展开成线性。 通过扇区的下标编号可以推算出在磁盘的位置。 磁盘的寄存器 控制寄存器:负责告诉磁盘是读还是写。 数据寄存器:给…...

ElasticSearch-文档元数据乐观并发控制

文章目录 什么是文档?文档元数据文档的部分更新Update 乐观并发控制 最近日常工作开发过程中使用到了 ES,最近在检索资料的时候翻阅到了 ES 的官方文档,里面对 ES 的基础与案例进行了通俗易懂的解释,读下来也有不少收获&#xff0…...

海浪波高预测(背景调研)

#新星杯14天创作挑战营第7期# ps:图片由通义千问生成 历史工作: 针对更高细粒度、更高精度的波浪高度预测任务: Mumtaz Ali 等人提出了一种多元线性回归模型(MLR-CWLS),该模型利用协方差加权最小二乘法&a…...

景联文科技加入AIIA联盟数据标注分委会

2025年1月16日,中国人工智能产业发展联盟(简称AIIA)数据委员会数据标注分委会(以下简称“分委会”)正式成立。景联文科技成为第一批AIIA联盟数据标注分委会委员单位。 数据标注分委会的成立旨在搭建数据标注领域产学研…...

【Healpix】python一种用于将球面划分为均匀区域的技术

Healpix 1、简介2、Healpix的基本原理3、Healpix的优点4、安装及使用4.1 安装healpy4.2 创建Healpix地图4.3 读取和写入Healpix数据4.4 数据插值 5、案例5.1 案例一:宇宙微波背景辐射(CMB)分析5.2 案例二:星系分布分析5.3 案例三&…...

chrome源码剖析—进程通信

Chrome 浏览器采用多进程架构(multi-process architecture),这种架构使得每个浏览器标签、扩展、插件、GPU 渲染等都在独立的进程中运行。为了确保不同进程之间的高效通信,Chrome 使用 进程间通信(IPC, Inter-Process …...

自定义数据集 使用tensorflow框架实现逻辑回归并保存模型,然后保存模型后再加载模型进行预测

在 TensorFlow 中实现逻辑回归、保存模型并加载模型进行预测的过程可以分为以下几个步骤: 准备数据:创建或加载你的自定义数据集。构建逻辑回归模型。训练模型。保存模型。加载模型。使用加载的模型进行预测。 import tensorflow as tf import numpy as…...

antdesignvue统计数据源条数、计算某列合计值、小数计算不精确多了很多小数位

1.在</a-table>下方加如下代码 <div>数据总条数&#xff1a;{ {tableData.length}}&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp <template>A列合计&#xff1a;{ {sum}}</template> </div> 注&#xff1a;tableData为<a-tabl…...

【MySQL】--- 复合查询 内外连接

Welcome to 9ilks Code World (๑•́ ₃ •̀๑) 个人主页: 9ilk (๑•́ ₃ •̀๑) 文章专栏&#xff1a; MySQL &#x1f3e0; 基本查询回顾 假设有以下表结构&#xff1a; 查询工资高于500或岗位为MANAGER的雇员&#xff0c;同时还要满足他们的姓名首字母为…...

书生大模型实战营2

L0——入门岛 Python基础 Conda虚拟环境 虚拟环境是Python开发中不可或缺的一部分&#xff0c;它允许你在不同的项目中使用不同版本的库&#xff0c;避免依赖冲突。Conda是一个强大的包管理器和环境管理器。 创建新环境 首先&#xff0c;确保你已经安装了Anaconda或Minico…...

Vue.js 使用 Vuex 管理组件间的共享状态

Vue.js 使用 Vuex 管理组件间的共享状态 今天咱们来聊聊如何用 Vuex 来管理 Vue.js 应用中各个组件之间的共享状态。如果你曾经在项目中为了让组件共享数据而头疼&#xff0c;那么这篇文章就是为你准备的。 什么是 Vuex&#xff1f; 简单来说&#xff0c;Vuex 就是 Vue.js 的…...

我们需要有哪些知识体系,知识体系里面要有什么哪些内容?

01、管理知识体系的学习知识体系 主要内容&#xff1a; 1、知识管理框架的外部借鉴、和自身知识体系的搭建&#xff1b; 2、学习能力、思维逻辑能力等的塑造&#xff1b; 3、知识管理工具的使用&#xff1b; 4、学习资料的导入和查找资料的渠道&#xff1b; 5、深层关键的…...

HTML5+SVG+CSS3实现雪中点亮的圣诞树动画效果源码

源码介绍 这是一款基于HTML5SVGCSS3实现雪中点亮的圣诞树动画效果源码。画面中的圣诞树矗立在雪地中&#xff0c;天上飘落着雪花。当鼠标滑过圣诞树时&#xff0c;可见到圣诞树上的灯光闪烁&#xff0c;同时左下角探出雪怪模样的半个脑袋&#xff0c;四处张望着。整体画面栩栩…...

/opt安装软件,就可以使用man xx命令是为什么

引言 以neovim的安装过程为例 下载 curl -LO https://github.com/neovim/neovim/releases/latest/download/nvim-linux64.tar.gz sudo rm -rf /opt/nvim sudo tar -C /opt -xzf nvim-linux64.tar.gz添加环境变量前&#xff0c;是无法使用man nvim的 Then add this to your sh…...

【cran Archive R包的安装方式】

cran Archive R包的安装方式 添加链接描述 1.包被cran移除 2.包要求的R语言版本与你电脑上的版本不相符 ad archive包的网址或者是下载到工作目录下&#xff0c;ad等于文件名 install,packages(ad repos NULL)...