title:Beego的Tag詳解
tags: go,beego
我們在文章 Beego的ORM操作之創建表
中,對user結構圖用到了一些Tag標籤,現在我們就來詳細的說明下。
模型設置
auto
當 Field 類型爲 int, int32, int64, uint, uint32, uint64 時,可以設置字段爲自增健
type Users struct {
.....
AnyField int `orm:"auto"`
}
當模型定義裏沒有主鍵時,符合上述類型且名稱中帶有ID 的 Field 將被視爲自增健,如StuID。
pk
設置爲主鍵,適用於自定義其他類型爲主鍵
type Users struct {
.....
AnyField int `orm:"pk"`
}
因爲Tag使用方法都一樣,就不一一貼代碼了
如果想要多個Tag同時使用 可以這樣orm:"pk;atuo"
這樣就設置爲主鍵自增長。
- 忽略字段
設置 - 即可忽略 struct 中的字段
null
數據庫表默認爲 NOT NULL,設置 null 代表不允許爲空
index
爲單個字段增加索引
unique
爲單個字段增加 unique 鍵,讓該屬性的內容不同重複
column
爲字段設置 db 字段的名稱,就是設置列名
Name string `orm:"column(user_name)"`
size
設置字段大小,如需設置vchar類型最大長度爲60,則用size(60),
digits / decimals
設置 float32, float64 類型的浮點精度
Money float64 `orm:"digits(12);decimals(4)"`
auto_now / auto_now_add
- auto_now 每次 model 保存時都會對時間自動更新
- auto_now_add 第一次保存時才設置時間
Created time.Time `orm:"auto_now_add;type(datetime)"`
Updated time.Time `orm:"auto_now;type(datetime)"`
注意: 對於批量的 update 此設置是不生效的
type
-設置爲 date 時,time.Time 字段的對應 db 類型使用 date
Created time.Time `orm:"auto_now_add;type(date)"`
- 設置爲 datetime 時,time.Time 字段的對應 db 類型使用 datetime
Created time.Time `orm:"auto_now_add;type(datetime)"`
default
爲字段設置默認值,類型必須符合(目前僅用於級聯刪除時的默認值)