首页 >后端开发 >Golang >GORM:如何一对一链接?

GORM:如何一对一链接?

WBOY
WBOY转载
2024-02-11 11:45:08873浏览

GORM:如何一对一链接?

GORM是一个流行的Go语言ORM库,用于简化数据库操作。在使用GORM进行一对一链接时,我们可以通过定义结构体之间的关系来实现。首先,我们需要在结构体中添加外键字段,然后使用GORM的`BelongsTo`方法将两个结构体关联起来。接下来,我们可以使用`Preload`方法在查询时预加载关联数据,以便在需要时一起获取。通过这种方式,我们可以轻松地实现一对一链接,并方便地操作相关数据。

问题内容

我正在尝试从数据库加载队列项目。我已经创建了一个 API 端点,但无法获取要预加载的队列项目的数据。相反,整个“数据”对象充满了空值。

处理程序:

func QueueItemHandler(w http.ResponseWriter, r *http.Request) {
    var queueItems QueueItem
    var builder = database.Model(QueueItem{})

    var queryError = builder.
        Preload("Status").
        Preload("Data").
        Find(&queueItems).
        Error

    w.Header().Set("Content-Type", "application/json")
    json.NewEncoder(w).Encode(queueItems)
}

以下是我的 gorm 模型的设置方式:

type QueueItemStatus struct {
    ID          int64  `json:"id" gorm:"primary_key"`
    Name        string `json:"name"`
    Description string `json:"description"`
}

type QueueItemData struct {
    ID            int64  `json:"id" gorm:"primary_key"`
    QueueItemId   int64  `json:"queue_item_id"`
    ScreenshotUrl string `json:"screenshot_url"`
}

type QueueItem struct {
    ID            int64                  `json:"id" gorm:"primary_key"`
    SourceUrl     string                 `json:"source_url"`
    OriginId      int64                  `json:"origin_id"`
    StatusId      int64                  `json:"status_id"`
    Status        QueueItemStatus `json:"status"`
    Data          QueueItemData   `json:"data" gorm:"foreignKey:id,references:queue_item_id"`
    CreatedAt     time.Time              `json:"created_at"`
}

我在想也许我设置的模型指向错误的列(如果有的话)?

解决方法

尝试改变这个

Data       QueueItemData    `json:"data" gorm:"foreignKey:QueueItemId;references:ID"`

以上是GORM:如何一对一链接?的详细内容。更多信息请关注PHP中文网其他相关文章!

声明:
本文转载于:stackoverflow.com。如有侵权,请联系admin@php.cn删除