Beego框架学习笔记03--Beego Orm杂记

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

猜你喜欢

转载自blog.csdn.net/u013792921/article/details/84852333