当前位置:网站首页>Gorm Association summary
Gorm Association summary
2022-07-07 23:44:00 【Cough, Hello, please give me more advice!】
Database design
surface 1:
CREATE TABLE `blog_user` (
`id` int unsigned NOT NULL AUTO_INCREMENT,
`username` varchar(50) COLLATE utf8mb4_general_ci NOT NULL DEFAULT '',
`password` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL DEFAULT '',
`created_at` datetime(3) DEFAULT NULL,
`updated_at` datetime(3) DEFAULT NULL,
PRIMARY KEY (`id`),
KEY `idx_blog_user_created_at` (`created_at`),
KEY `idx_blog_user_updated_at` (`updated_at`)
) ENGINE=InnoDB AUTO_INCREMENT=9 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci;
--------------------------------------------------------------------------------------------------------------------
surface 2:
CREATE TABLE `blog_article` (
`id` int unsigned NOT NULL AUTO_INCREMENT,
`title` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL DEFAULT '',
`user_id` bigint unsigned NOT NULL,
`is_hot` tinyint NOT NULL,
`created_at` datetime(3) DEFAULT NULL,
`updated_at` datetime(3) DEFAULT NULL,
`deleted_at` timestamp NULL DEFAULT NULL,
PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=15 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci;
1.Belongs To Belong to
The relationship between users and articles The article table exists in the user table id As Foreign keys , article Belong to user
1-1 User Of Model Structure
type User struct {
models.BaseModel
UserName string `gorm:"column:username;" json:"username"`
Password string `json:"-"`
models.CommonTimestampsField
}
1-2 Article Of Model Structure
type Article struct {
models.BaseModel
Title string `json:"title"`
IsHot int8 `json:"is_hot"`
UserId int64 `json:"user_id"` // Foreign keys
User users.User `json:"user" gorm:"ForeignKey:UserId"`// Associated object
}
Inquire about :
Joins or Preload Preloading
var results []Article
database.DB.Model(&Article{}).Joins("User").Find(&results).Error, results
2. hasOne one-on-one
The relationship between users and articles The article table exists in the user table id As Foreign keys , user And article one-on-one ( Assume One can only have one piece of article )
2-1 User Of Model Structure
type User struct {
models.BaseModel
UserName string `gorm:"column:username;" json:"username"`
Password string `json:"-"`
Article article.Article `gorm:"foreignKey:UserId"`// One to one connection
models.CommonTimestampsField
}
2-2 Article Of Model Structure
type Article struct {
models.BaseModel
Title string `json:"title"`
IsHot int8 `json:"is_hot"`
UserId int64 `json:"user_id"` // Foreign keys
}
Inquire about :
Preload Preloading
var results []Article
database.DB.Model(&User{}).Preload("Article").Find(&results).Error, results
3.Has Many One to many The relationship between users and articles The article table exists in the user table id As Foreign keys , user And article One to many
3-1 User Of Model Structure
type User struct {
models.BaseModel
UserName string `gorm:"column:username;" json:"username"`
Password string `json:"-"`
Article []article.Article `gorm:"foreignKey:UserId"`
models.CommonTimestampsField
}
3-2 Article Of Model Structure
type Article struct {
models.BaseModel
Title string `json:"title"`
IsHot int8 `json:"is_hot"`
UserId int64 `json:"user_id"` // Foreign keys
}
Inquire about :
Preload Preloading
var results []Article
database.DB.Model(&User{}).Preload("Article").Find(&results).Error, results
4.Many To Many
4-1. newly added It's the body surface language & blog_user_has_language
CREATE TABLE `blog_language` (
`id` int NOT NULL AUTO_INCREMENT,
`title` varchar(100) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL DEFAULT '',
`created_at` timestamp NULL DEFAULT NULL,
`updated_at` timestamp NULL DEFAULT NULL,
`deleted_at` timestamp NULL DEFAULT NULL,
PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=3 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci;
------------------------------------------------------------------------------------
CREATE TABLE `blog_user_has_language` (
`user_id` int NOT NULL DEFAULT '0',
`language_id` int NOT NULL DEFAULT '0'
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci;
4-2. Structure
type User struct {
models.BaseModel
UserName string `gorm:"column:username;" json:"username"`
Password string `json:"-"`
Languages []language.Language `gorm:"many2many:user_has_language;"`
models.CommonTimestampsField
}
4-3. Inquire about :
Preload Preloading
var results []Article
database.DB.Model(&User{}).Preload("Languages").Find(&results).Error, results
边栏推荐
- C method question 2
- JNI uses asan to check memory leaks
- P1067 [noip2009 popularity group] polynomial output (difficult, pit)
- Boost regex library source code compilation
- HDU - 1260 Tickets(线性DP)
- c—线性表
- 平衡二叉樹【AVL樹】——插入、删除
- Mobile heterogeneous computing technology - GPU OpenCL programming (basic)
- Understand TCP's three handshakes and four waves with love
- Chisel tutorial - 04 Control flow in chisel
猜你喜欢
C inheritance and interface design polymorphism
SAP HR奖罚信息导出
Arbre binaire équilibré [Arbre AVL] - Insérer et supprimer
Balanced binary tree [AVL tree] - insert, delete
BSS 7230 航空内饰材料阻燃性能测试
【实验分享】通过Console口登录到Cisco设备
Ora-01741 and ora-01704
[experiment sharing] log in to Cisco devices through the console port
保证接口数据安全的10种方案
Interface
随机推荐
Aitm3.0005 smoke toxicity test
Design and implementation of spark offline development framework
P1055 [noip2008 popularization group] ISBN number
HDU - 1260 Tickets(线性DP)
C number of words, plus ¥, longest word, average value
Progress broadcast | all 29 shield machines of Guangzhou Metro Line 7 have been launched
UIC564-2 附录4 –阻燃防火测试:火焰的扩散
SAP HR reward and punishment information export
SAP HR labor contract information 0016
The for loop realizes 1-100 addition and eliminates the 4-digit tail number
Extract the file name under the folder under win
SAP HR family member information
ping报错:未知的名称或服务
【leetcode】day1
解析token的网址
B_ QuRT_ User_ Guide(39)
SAP 内存参数调优过程
C simple question 2
【7.4】25. K 个一组翻转链表
保证接口数据安全的10种方案