前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >gorm之Belongs To--属于

gorm之Belongs To--属于

作者头像
大话swift
发布2020-03-25 17:46:07
8960
发布2020-03-25 17:46:07
举报
文章被收录于专栏:大话swift

抱歉!今天更新的有点晚!大清早就被拉起来改bug!给大家写点示例,避免采坑!希望大家都有一个愉快的周末!

大家在开发的过程经常面对“谁属于谁”的问题,例如:你的女朋友属于你。那么你怎么知道你的女朋友属于你呢?首先要在女朋友哪里打个标识属于你,那么就可以通过你找到你的朋友了。有的小伙伴比较悲催,需要手动在女朋友哪里打个标识,那么找到你再找你女票的话就需要指定标识。

有的小伙伴说,我没有女朋友怎么办?new一个对象出来!

那么我们gorm中怎么建立这种属于关系呢?又是怎么表示的呢?为了照顾有些小伙伴的情绪,我们一用户和邮箱、用户和手机号为例。 用户表结构

代码语言:javascript
复制
package models
type User struct {    Model    Name string    Age  uint}

邮箱表结构

代码语言:javascript
复制
package models
type Email struct {    Model    Address string `json:"address"`    User    User   `json:"user"`    UserId  uint   `json:"userId"` //默认的关联字段}

那么当我们知道了用户的信息就可以根据用户的信息关联查询到用户的邮箱 有的时候我们需要手动指定关联关系,那么我们可以这么做

代码语言:javascript
复制
package models
type Mobile struct {    Model    Address     string `json:"address"`    User        User   `json:"user" gorm:"foreignkey:UserReferId"` // //指定UserReferId为关联字段    UserReferId uint   `json:"userReferId"`                        //自定义的关联字段}

查询示例

代码语言:javascript
复制
package main
import (  "ginLearn.com/models")
func main() {  db := models.DB()  user := models.User{}  user.ID = 1  email := models.Email{}
  //邮箱属于用户  //SELECT * FROM `emails`  WHERE `emails`.`deleted_at` IS NULL AND ((`user_id` = 1))  db.Model(&user).Related(&email)
  mobile := models.Mobile{}  //手机号码属于用户  //SELECT * FROM `mobiles`  WHERE `mobiles`.`deleted_at` IS NULL AND ((`user_refer_id` = 1))  //我们手动指定了关联字段  db.Model(&user).Related(&mobile, "UserReferId")
  //我们通过关联关系可以更改对应的信息  //例如 这里我们知道了邮箱,编辑邮箱信息的时候可以直接更新用户信息,只需要赋值就好,gorm会自动帮我们处理  user.Name = "hanyun"  user.Age = 31  mobile.User = user  mobile.Address = "15388888888"  //由于关联关系的存在,同时执行了两部操作  //UPDATE `users` SET `updated_at` = '2020-03-21 17:56:12', `deleted_at` = NULL, `name` = 'hanyun', `age` = 31  WHERE `users`.`deleted_at` IS NULL AND `users`.`id` = 1  // UPDATE `mobiles` SET `updated_at` = '2020-03-21 17:56:12', `deleted_at` = NULL, `address` = '15388888888', `user_refer_id` = 1  WHERE `mobiles`.`deleted_at` IS NULL AND `mobiles`.`id` = 1  db.Save(&mobile)}

链接:https://pan.baidu.com/s/1UMytsYxPdf3i5Go4tZs8aA 提取码:3lyg

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2020-03-21,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 大话swift 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 抱歉!今天更新的有点晚!大清早就被拉起来改bug!给大家写点示例,避免采坑!希望大家都有一个愉快的周末!
  • 大家在开发的过程经常面对“谁属于谁”的问题,例如:你的女朋友属于你。那么你怎么知道你的女朋友属于你呢?首先要在女朋友哪里打个标识属于你,那么就可以通过你找到你的朋友了。有的小伙伴比较悲催,需要手动在女朋友哪里打个标识,那么找到你再找你女票的话就需要指定标识。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档