项目里封装了统一的redis缓存结构,图省事直接用别名查询,没想到gorm后报错了
type RedisValueScore struct {
Value string `json:"value"`
Score float64 `json:"score"`
}
var doc RedisValueScore
db.Select("relation_id as value,UNIX_TIMESTAMP(updated_at) as score").First(&doc).Error
打开debug,发现sql结尾加上了order by table.value,而table里并没有value字段,查看First源码,发现新版First默认按主键排序,而且不能关闭。。。
查阅了文档,发现可以用take,跟first效果差不多,只是没有加排序,搞定
Select("relation_id as value,UNIX_TIMESTAMP(updated_at) as score").Take(&doc).Error