这是一个创建于 512 天前的主题,其中的信息可能已经有所发展或是发生改变。
想把公共的字段( id,create_time,update_time...)拿出来单独放一个结构体,然后嵌套到结构体上最后映射到字段上。试了一下,发现它直接把嵌套的结构体名作为 text 类型的字段创建到了表上了。
1.xorm 支持嵌套结构体然后映射字段吗?
2.xorm 能不能通过字段属性定义字段的前后顺序?
type BaseModel struct {
Id int32 `json:"id" xorm:"int pk autoincr(1) comment('用户 ID')"`
CreateAt time.Time `json:"create_at" xorm:"create_at updated comment('创建时间')"`
UpdateAt time.Time `json:"update_at" xorm:"update_at updated comment('更新时间')"`
}
type User struct {
UserName string `json:"username" xorm:"varchar(32) notnull comment('用户名')"`
Password string `json:"password" xorm:"varchar(32) notnull comment('用户密码')"`
BaseModel
}
最后出现了在数据库上的表定义是:
CREATE TABLE `user` (
`user_name` varchar(32) NOT NULL COMMENT '用户名',
`password` varchar(32) NOT NULL COMMENT '用户密码',
`base_model` text
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci;
2 条回复 • 2023-06-15 01:35:59 +08:00
|
|
1
zanelee 2023-06-14 16:49:33 +08:00
第一个问题又看了看文档已经解决了,是要在对应的嵌套的结构体后面加 extends 的属性定义 type User struct { UserName string `json:"username" xorm:"varchar(32) notnull comment('用户名')"` Password string `json:"password" xorm:"varchar(32) notnull comment('用户密码')"` BaseModel `xorm:"extends"` } 定义字段的顺序还是没发现怎么搞,比如我想要 id 字段在数据库表结构的字段是第 1 列,create_at 和 update_at 在最后 2 列
|
|
|
2
hzzhzzdogee 2023-06-15 01:35:59 +08:00
关于问题 2, 我印象中表字段顺序就是按照 struct 字段顺序排列的吧?
你是想用 tag 手动标注字段顺序, 似乎没有这个功能.
|