beego tag詳解
文章目錄
在使用ORM操作建立表時,經常需要用一些tag標籤,在這裡做一整理
1. auto
當 Field 型別為 int, int32, int64, uint, uint32, uint64 時,可以設定欄位為自增健
AnyField int `orm:"auto"`
2. pk
設定為主鍵,適用於自定義其他型別為主鍵
AnyField int `orm:"pk"`
3. - 忽略欄位
設定 - 即可忽略 struct 中的欄位
4. null
資料庫表預設為 NOT NULL,設定 null 代表不允許為空
5. index
為單個欄位增加索引
6. unique
為單個欄位增加 unique 鍵,讓該屬性的內容不同重複
7. column
為欄位設定 db 欄位的名稱,就是設定列名
Name string `orm:"column(user_name)"`
8. size
設定欄位大小,如需設定vchar型別最大長度為60,則用size(60),
9. digits / decimals
設定 float32, float64 型別的浮點精度
Money float64 `orm:"digits(12);decimals(4)"`
10. 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 此設定是不生效的
11. 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)"`
12. default
為欄位設定預設值,型別必須符合(目前僅用於級聯刪除時的預設值)
13. 使用例項
type Server struct {
// ID 不會匯出到JSON中
ID int `json:"-"`
// ServerName 的值會進行二次JSON編碼
ServerName string `json:"serverName"`
//含有都是json多個json輸出用到的tag的時候
ServerName2 string `json:"serverName2,string"`
// 如果 ServerIP 為空,則不輸出到JSON串中
ServerIP string `json:"serverIP,omitempty"`
}
type studentinfo struct {
//設定主鍵且為自動增長(可以不設定,預設就是這樣)
Id int `pk:"auto"`
//設定欄位的長度
Stuname string `orm:"size(20)"`
Stuidentify string `orm:"size(30)"`
Stubirth time.Time
Stuclass string `orm:"size(30)"`
Stumajor string `orm:"size(30)"`
}
type Userinfos struct {
//設定主鍵自動增長的
Id int `pk:"auto"`
//設定欄位的大小
Name string `orm:"size(30)"`
// OneToOne 關係 同時含有json輸出格式
Profile *Profile `orm:"rel(one)" json:"profile,omitempty`
//Post []*Post `orm:"reverse(many)"` // 設定一對多的反向關係
}
type Profile struct {
Id int
Age int
Email string
Gender string
// 設定一對一反向關係(可選)
User *Userinfos `orm:"reverse(one)"`
}
type Post struct {
Id int
Title string
//設定多對多關係
Tags []*Tag `orm:"rel(m2m)"`
}
type Tag struct {
Id int
Name string
//設定反向多對多關係
Posts []*Post `orm:"reverse(many)"`
}
相關文章
- Git tag標籤用法詳解Git
- Flutter GetX Tag 屬性使用詳解Flutter
- SVN trunk(主線) branch(分支) tag(標記) 用法詳解和詳細操作步驟
- DedeCMS Error: Tag disabled: "php" 解決方法ErrorPHP
- beego註解路由中各個引數解釋Go路由
- BSP tag in CRM and JSP tag in HybrisJS
- Git - TagGit
- Docker tagDocker
- git tagGit
- 帝國CMS在IIS環境開啟TAG偽靜態後,中文TAG提示“TAG不存在”的最後解決方法!
- Beego 再出發Go
- beego orm使用GoORM
- beego問題Go
- 易優tag TAG呼叫標籤-EyouCms手冊
- docker tag命令Docker
- Beego 框架巔峰之路Go框架
- docker建立beego映象DockerGo
- beego訪問redisGoRedis
- beegoapix - beego api extensionGoAPI
- beego & bee 1.9.0 releasedGo
- windows 安裝beegoWindowsGo
- prettier Unexpected closing tag "p". It may happen when the tag has already been closed by another tag.APP
- Git tag 標籤Git
- Git Note - git tagGit
- [Javascript] template literal tagJavaScript
- docker image REPOSITORY 為 TAG 為none的解決方法DockerNone
- 求救Beego大神們,Beego orm 怎麼限制Relation裡返回的Variable?GoORM
- beego 架構(API 版)Go架構API
- Beego Models之二Go
- beego框架程式碼分析Go框架
- beego建立專案流程Go
- beego快取問題Go快取
- beego上傳檔案Go
- beego & bee 1.9.0 releasedGo
- Beego 自動化部署Go
- Go語言之 Struct TagGoStruct
- github clone 指定的tagGithub
- docker tag save loadDocker