## 一、模型名和表名映射
1.模型名和表名的映射規則:除了開頭的大寫字母以外,遇到大寫會增加 \_,原名稱中的下劃線保留。
* Article -> article
* AuthUser -> auth_user
* Auth\_User -> auth__user 兩個下劃線
* DB\_AuthUser -> d\_b\_\_auth\_user
2.自定義表名
~~~
type User struct {
Id int
Name string
}
//自定義表名
func (u *User) TableName() string {
return "auth_user"
}
~~~
## 二、設置參數:使用structtag
1.忽略字段structtag:`orm:"-"`
2.pk設置為主鍵,適用于自定義其他類型為主鍵
3.null:Name string`orm:"null"`
4.auto:自增長
~~~
Id int `orm:"pk;auto"`
~~~
5.index:索引
~~~
Name string `orm:"index"`
~~~
索引的作用:優化查詢,相當于圖書的目錄
6.unique
~~~
Name string `orm:"unique"`
~~~
7.column
重寫數據庫字段的別名
~~~
Name string `orm:"column(user_name)"`
~~~
~~~
type User struct {
ID uint // 字段名是 `id`
Name string // 字段名是 `name`
Birthday time.Time // 字段名是 `birthday`
CreatedAt time.Time // 字段名是 `created_at`
Groupss int `orm:"column(groups_id)"`// 字段名是 `groups_id`
}
~~~
8.size:對string起作用
~~~
Title string `orm:"size(60)"`
~~~
9.digits / decimals 4 2 12.21
~~~
Money float64 `orm:"digits(12);decimals(4)"` 總長度12,小數點后有4位小數
~~~
10.auto\_now / auto\_now\_add
~~~
// 時間
Created time.Time `orm:"auto_now_add;type(datetime)"`
Updated time.Time `orm:"auto_now;type(datetime)"`
// 日期
Created time.Time `orm:"auto_now_add;type(date)"`
Updated time.Time `orm:"auto_now;type(date)"`
~~~
auto\_now 每次 model 保存時都會對時間自動更新
auto\_now\_add 第一次保存時才設置時間
11.type:日期還是時間
~~~
Created time.Time `orm:"auto_now_add;type(date)"`
Created time.Time `orm:"auto_now_add;type(datetime)"`
~~~
12.default
~~~
Gender float64 `orm:"default(0)"`
~~~
13.description
修改源碼:cmd\_utils.go的 getColumnAddQuery()最后加:fi.description,
~~~
Name string `orm:"description(這是標簽名稱)"`
~~~