如何通过 GORM 查询并仅返回 id 数组?

发布于 2025-01-15 05:57:21 字数 1132 浏览 1 评论 0原文

我现在在使用 Gorm 从数据库(Postgres)获取数组提要的 id 时遇到问题。

如何查询并返回 id 数组 feed?我不知道如何在没有循环的情况下从结构中仅获取 id

feeds := []models.Feed{}
feedID := []string{}
db.Select("id").Where("user_id = ?", "admin1").Find(&feeds)
for _, feed := range feeds {
   feedID = append(feedID, feed.ID)
}
utils.PrintStruct(feeds)

这是提要模型文件:

type Feed struct {
    Model
    Status     string      `json:"status"`
    PublishAt  *time.Time  `json:"publishAt"`
    UserID     string      `json:"userID,omitempty"`
}

这是用于数据实体的模型基础数据模型:

type Model struct {
    ID        string     `json:"id" gorm:"primary_key"`
}

结果:

[
        {
                "id": "d95d4be5-b53c-4c70-aa09",
                "status": "",
                "publishAt": null,
                "userID":""
        },
        {
                "id": "84b2d46f-a24d-4854-b44d",
                "status": "",
                "publishAt": null,
                "userID":""
        }
]

但我想要这样:

["d95d4be5-b53c-4c70-aa09","84b2d46f-a24d-4854-b44d"]

I'm now having a problem with getting an id of array feeds from database (Postgres) with Gorm.

How can I query and return id array feeds? I don't know how to get only id from struct without loop

feeds := []models.Feed{}
feedID := []string{}
db.Select("id").Where("user_id = ?", "admin1").Find(&feeds)
for _, feed := range feeds {
   feedID = append(feedID, feed.ID)
}
utils.PrintStruct(feeds)

This is feed model file:

type Feed struct {
    Model
    Status     string      `json:"status"`
    PublishAt  *time.Time  `json:"publishAt"`
    UserID     string      `json:"userID,omitempty"`
}

This is model base data model using for data entity:

type Model struct {
    ID        string     `json:"id" gorm:"primary_key"`
}

Result:

[
        {
                "id": "d95d4be5-b53c-4c70-aa09",
                "status": "",
                "publishAt": null,
                "userID":""
        },
        {
                "id": "84b2d46f-a24d-4854-b44d",
                "status": "",
                "publishAt": null,
                "userID":""
        }
]

But I want like this:

["d95d4be5-b53c-4c70-aa09","84b2d46f-a24d-4854-b44d"]

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

鲜肉鲜肉永远不皱 2025-01-22 05:57:21

您可以使用 pluck

var ids []string
db.Model(&Feed{}).Where("user_id = ?", "admin1").Pluck("id", &ids)

You can use pluck

var ids []string
db.Model(&Feed{}).Where("user_id = ?", "admin1").Pluck("id", &ids)
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文