Golang Go语言中伸手求一个 gorm 的查询方法
Golang Go语言中伸手求一个 gorm 的查询方法
看了一上午文档还没写出来
post tag post_tag_relation 三个表,post 和 tag 是多对多关系
现在要从关系表中查找某个 tagId 对应的所有 postId,再查这些 postId 对应的 post 信息,就包括把每个 post 对应的所有 tag 也查出来,有什么方便的方法吗
因为查询条件不确定,所以目前是这样写的
tagId,ok:=para["tagId"]
if ok{
tagId=int(tagId.(float64))
var postIds []int64
var rels []models.PostTagRelation
err := db.Table("post_tag_relation").Where("tag_id=?", tagId).Where("del=?",0).Select("postId").Find(&rels).Error
if err != nil {
log.Println("query error: ", err)
c.JSON(200, failResp)
return
}
for _, rel := range rels {
postIds = append(postIds, rel.PostId)
}
db2=db2.Where("id in (?)",postIds)
}
更多关于Golang Go语言中伸手求一个 gorm 的查询方法的实战系列教程也可以访问 https://www.itying.com/category-94-b0.html
更多关于Golang Go语言中伸手求一个 gorm 的查询方法的实战系列教程也可以访问 https://www.itying.com/category-94-b0.html
在Go语言中,GORM是一个非常流行的ORM(对象关系映射)库,它提供了简洁的API来操作数据库。针对你的请求,下面是一个使用GORM进行查询的示例方法。
首先,确保你已经安装了GORM以及相应的数据库驱动,例如MySQL驱动:
go get -u gorm.io/gorm
go get -u gorm.io/driver/mysql
然后,你可以使用以下代码来定义一个查询方法。假设你有一个名为User
的模型:
package main
import (
"gorm.io/driver/mysql"
"gorm.io/gorm"
"fmt"
)
type User struct {
ID uint
Name string
}
func main() {
dsn := "username:password@tcp(127.0.0.1:3306)/dbname?charset=utf8mb4&parseTime=True&loc=Local"
db, err := gorm.Open(mysql.Open(dsn), &gorm.Config{})
if err != nil {
panic("failed to connect database")
}
var users []User
db.Find(&users) // 查询所有用户
for _, user := range users {
fmt.Println(user.Name)
}
}
在这个示例中,我们首先连接到MySQL数据库,然后定义了一个User
结构体。通过调用db.Find(&users)
,我们可以查询所有用户并将结果存储在users
切片中。最后,我们遍历切片并打印每个用户的名称。
当然,GORM还支持更多复杂的查询操作,如条件查询、排序、分页等。你可以参考GORM的官方文档来获取更多信息。