Golang Go语言中伸手求一个 gorm 的查询方法

发布于 1周前 作者 yuanlaile 来自 Go语言

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

1 回复

更多关于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的官方文档来获取更多信息。

回到顶部