为了账号安全,请及时绑定邮箱和手机立即绑定

Gorm Find() 查询未填充保存结果集的已定义结构中定义的所有字段

Gorm Find() 查询未填充保存结果集的已定义结构中定义的所有字段

Go
MYYA 2022-11-23 14:10:02
我遇到的问题是结果集中返回的tx没有设置所有字段。无法弄清楚为什么?它在实际的数据库表中具有价值。// request object supplied in FetchTransactionWithHighestExpiry:type ProvisionRequest struct {        Identity string     `json:"identity"`        IdentityType string `json:"identityType"`}// struct to model database tabletype Transactions struct {        Identity string `gorm:"index;not null"`        IdentityType string }// method where there is problemfunc (c *DBClient) FetchTransactionWithHighestExpiry(req *model.ProvisionRequest) (model.Transactions, error)  {    var tx model.Transactions    res := c.client.Model(&model.Transactions{}).Where("identity = ? AND endDate  > ?", req.Identity, time.Now().Unix()).Order("endDate desc").First(&tx)    return tx, res.Error}我的 tx 只有身份集的值,而 identityType 是一个空字符串。任何想法我在这里做错了什么?编辑 1:事务表架构-- rp.transactions definitionCREATE TABLE `transactions` (  `transaction_id` varchar(255) NOT NULL,  `identity` varchar(255) DEFAULT NULL,  `identityType` varchar(15) DEFAULT NULL,  `serviceId` varchar(255) DEFAULT NULL,  `partnerId` varchar(255) DEFAULT NULL,  `countryId` varchar(255) DEFAULT NULL,  `updatedAt` timestamp NULL DEFAULT NULL,  `createdAt` timestamp NULL DEFAULT NULL,  `startDate` int NOT NULL,  `endDate` int NOT NULL,  PRIMARY KEY (`transaction_id`),  KEY `identity_idx` (`identity`)) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci;
查看完整描述

1 回答

?
扬帆大鱼

TA贡献1799条经验 获得超9个赞

默认情况下,在构造查询时,gorm 将使用 snake_case 约定将IdentityandIdentityType字段转换为identityandidentity_type列。

如果您的表列的名称不同,您需要指定它。

// struct to model database table

type Transactions struct {

        Identity string `gorm:"index;not null"`

        IdentityType string `gorm:"column:identityType"`

}


查看完整回答
反对 回复 2022-11-23
  • 1 回答
  • 0 关注
  • 147 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信