0

我正在尝试提取与 CityEntity 相关的 CountyEntity 数据:

type CityEntity struct {
    tableName struct{} `pg:"city,alias:ci,discard_unknown_columns"`
    Id        string   `pg:"id"`
    Name      string   `pg:"name"`
}

type CountyEntity struct {
    tableName            struct{}    `pg:"county,alias:co,discard_unknown_columns"`
    Id                   int64       `pg:"id"`
    Name                 string      `pg:"name"`
    DefaultTargetXDockId int64       `pg:"defaulttargetxdockid"`
    MapsPreference       string      `pg:"mapspreference"`
    EmptyDistrictAllowed bool        `pg:"empty_district_allowed"`
    CityId               int64       `pg:"cityid"`
    City                 *CityEntity `pg:"fk:cityid"`
}

我的查询是:

db, _ := repository.pgRepository.CreateDBConnection(.....)

var counties []model.CountyEntity
err := db.Model(&counties).
    Join("inner join test.city ci on ci.id = co.cityid").
    Relation("City").
    Where("co.cityid = ?", cityId).
    Select()
return counties, err

它抛出:

model=CountyEntity 没有关系=“City”

但实际上,我在数据库中有城市和县表之间的关系。

数据库关系图

我尝试了不同的方法来解决,但我无法解决。有没有人知道它的根本原因是什么以及可能的解决方案是什么?

4

1 回答 1

0

很老了,我相信你现在已经弄清楚了,但是对于其他偶然发现这个的人来说,你的模型应该是这样的

type CountyEntity struct {
    tableName            struct{}    `pg:"county,alias:co,discard_unknown_columns"`
    Id                   int64       `pg:"id"`
    Name                 string      `pg:"name"`
    DefaultTargetXDockId int64       `pg:"defaulttargetxdockid"`
    MapsPreference       string      `pg:"mapspreference"`
    EmptyDistrictAllowed bool        `pg:"empty_district_allowed"`
    CityId               int64       `pg:"cityid"`
    City                 *CityEntity `pg:"rel:has-one,fk:cityid"`
}

注意添加到城市列的“rel:has-one”。您可以在此处找到有关所有这些的更多信息:https ://pg.uptrace.dev/models/

于 2021-02-13T08:39:39.447 回答