【问题标题】:go-pg got doesn't has relation thought on my table has relationgo-pg got 没有关系 认为我的桌子上有关系
【发布时间】:2020-09-09 23:42:38
【问题描述】:

我与省份有联系,这是我的结构

    Contact struct {
        tableName       struct{}    `pg:"contacts,discard_unknown_columns"`
        ID              int         `json:"id"`
        Address         string      `json:"address"`
        BuildingType    string      `json:"building_type"`
        BuildingNumber  float64     `json:"building_number"`
        Province        *Province   `pg:"fk:province_id" json:"province"`
    }

    Province struct {
        tableName      struct{}         `pg:"provinces,discard_unknown_columns"`
        ID             int              `json:"id" pg:",pk"`
        Name           string           `json:"name"`
    }

这里是我的称呼:

    var us Contact
    err = db.Model(&us).Relation("provinces").Where(
        "id = ?", 3,
    ).Select()

我去的是 model=Contact does not have relation="provinces" 如何更正使用 go-pg 查询这个的方法?

当我用标签pg:"rel:has-one"更改省联系人的标签时

我收到了这个错误 pg: Contact has-one Province: Contact must have column province_id (use fk:custom_column tag on Province field to specify custom column)

注意:我不使用他们的迁移,我使用 sql-migration 进行所有迁移

【问题讨论】:

    标签: go go-pg


    【解决方案1】:

    如错误和文档中所述,您需要在Contact 上有一个province_id 列:

    Contact struct {
        tableName       struct{}    `pg:"contacts,discard_unknown_columns"`
        ID              int         `json:"id"`
        Address         string      `json:"address"`
        BuildingType    string      `json:"building_type"`
        BuildingNumber  float64     `json:"building_number"`
        ProvinceId      int         
        Province        *Province   `pg:"rel:has-one" json:"province"`
    }
    

    如果您的参考列名称不是province_id,那么您可以使用另一列并将fk:custom_column 添加到其中。

    【讨论】:

      【解决方案2】:

      你的省份缺少外键,试试这个,我认为它会工作。

      Contact struct {
          tableName       struct{}    `pg:"contacts,discard_unknown_columns"`
          ID              int         `json:"id"`
          Address         string      `json:"address"`
          BuildingType    string      `json:"building_type"`
          BuildingNumber  float64     `json:"building_number"`
          Province        *Province   `pg:"fk:contact_id" json:"province"`
      }
      
      Province struct {
          tableName      struct{}         `pg:"provinces,discard_unknown_columns"`
          ID             int              `json:"id" pg:",pk"`
          Name           string           `json:"name"`
          ContactID      int              `pg:"on_delete:CASCADE,notnull"`
      }
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2021-05-28
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2019-05-11
        相关资源
        最近更新 更多