Golang Gorm三表关联查询:高效获取用户信息详解
在使用Golang的Gorm库进行数据库操作时,多表关联查询是常见需求。本文将详细讲解如何使用Gorm在record、recorduser和user三个表之间高效关联查询,最终获取user.username信息。
假设我们有三个结构体:record、recorduser和user,它们之间存在一对多和一对一关系:record一对多关联recorduser,recorduser一对一关联user。我们的目标是查询一条record记录,同时获取关联的user的username。
简单的Gorm preload方法只能进行一级关联查询,无法直接获取user.username。为了提高效率,避免Gorm嵌套关联查询带来的性能问题,直接使用自定义SQL语句是更有效的方法。
立即学习“go语言免费学习笔记(深入)”;
我们可以利用Gorm的Raw方法执行自定义SQL查询:
var model Recorddb.Raw("SELECT r.*, ru.*, u.UserName FROM records r JOIN record_users ru ON r.id = ru.RecordId JOIN users u ON ru.UserId = u.id WHERE r.id = ?", 1).Scan(&model)
登录后复制
本文来自互联网或AI生成,不代表软件指南立场。本站不负任何法律责任。