1.Mysql中时间格式问题
MySql中时间格式有两种:【DATETIME】【 TIMESTAMP】【DATE】【TIME】【YEAR】五种
而go中只有一种【time.Time】
ps:go语言中时间戳类型time转换为字符串string具有固定的转换语法
time.Now().Format("2006-01-02-15-04-05")
2.数据表关系:
(1)一对一(不常见,通常写在一张表里)
一表存在“单键”,表示当前表归属哪个表,但是这种添加对应关系并不会在数据库表中真的出现添加字段。只是orm结构体知道。
对本表字段添加约束:字段名 *二表指针类型 `orm:"rel(one)”
二表存在对应“单键”,表示当前表归属哪个表,同理也不会出现真的字段
对本表字段添加约束:字段名*一表指针类型 `orm:"reverse(one)”`
(2)一对多(非常常见,例如一个班级表对应很多学生表,一个学生表只能对应一个班级表)
子表存在“外键”,表示当前表归属哪个表,这种添加对应关系会在数据库中子表的内部添加一个外键字段。
对子表字段添加约束:字段名 *父表指针类型 `orm:"rel(fk)” //fk,即foreign key
父表存在对应,表示当前表拥有哪些表
对父表字段添加成员:字段名 []*子表指针切片类型 `orm:"reverse(many)"`
(3)多对多(比较常见,使用麻烦)
一表和二表都会存在对应字段,都是指针切片类型,毕竟一表可对应多个二表,二表也可对应多个一表。
一表:字段名 []*二表指针切片类型 `orm:"rel(m2m)"`
二表:字段名 []*一表指针切片类型 `orm:”reverse(many)”`
说明:对于表关系而言,存在一个rel字段,就必然在另外一个表中对应有一个reverse字段!
说明:rel负责决定是表关系,例如是【一对多(fk外键)】【多对多(m2m)】还是【一对一(one)】
说明:当多对多关系表被创建的时候,数据库会自动生成一个额外的关系表。这张关系表中只有两个对应表的主键id字段。
3.beego orm 读取数据库表中全部数据范例
//创建数据存储容器
var stuInfoSlice []models.stuInfo
//1.获取orm对象
o := orm.NewOrm()
//2.获取索引表stuInfo的querySeter具柄,提供高级检索功能
qs := o.QueryTable("stuInfo”)
//3.执行检索,获得结果
_,err := qs.All(&stuInfoSlice)
//4.校验结果
if err!=nil{
beego.Error("查询所有类型数据失败")
c.Redirect("/指定页面",300)
return
}
//5.检索成功,返回数据
c.Data["stuInfoSlice"] = stuInfoSlice