<em>Mac</em>Book项目 2009年学校开始实施<em>Mac</em>Book项目,所有师生配备一本<em>Mac</em>Book,并同步更新了校园无线网络。学校每周进行电脑技术更新,每月发送技术支持资料,极大改变了教学及学习方式。因此2011
2021-06-01 09:32:01
type User struct { gorm.Model Birthday time.Time Age int Name string `gorm:"size:255"` // string預設長度為255, 使用這種tag重設。 Num int `gorm:"AUTO_INCREMENT"` // 自增 CreditCard CreditCard // One-To-One (擁有一個 - CreditCard表的UserID作外來鍵) Emails []Email // One-To-Many (擁有多個 - Email表的UserID作外來鍵 BillingAddress Address // One-To-One (屬於 - 本表的BillingAddressID作外來鍵) BillingAddressID sql.NullInt64 ShippingAddress Address // One-To-One (屬於 - 本表的ShippingAddressID作外來鍵) ShippingAddressID int IgnoreMe int `gorm:"-"` // 忽略這個欄位 Languages []Language `gorm:"many2many:user_languages;"` // Many-To-Many , 'user_languages'是連線表 } type Email struct { ID int UserID int `gorm:"index"` // 外來鍵 (屬於), tag `index`是為該列建立索引 Email string `gorm:"type:varchar(100);unique_index"` // `type`設定sql型別, `unique_index` 為該列設定唯一索引 Subscribed bool } type Address struct { ID int Address1 string `gorm:"not null;unique"` // 設定欄位為非空並唯一 Address2 string `gorm:"type:varchar(100);unique"` Post sql.NullString `gorm:"not null"` } type Language struct { ID int Name string `gorm:"index:idx_name_code"` // 建立索引並命名,如果找到其他相同名稱的索引則建立組合索引 Code string `gorm:"index:idx_name_code"` // `unique_index` also works } type CreditCard struct { gorm.Model UserID uint Number string }
基本模型定義gorm.Model
,包括欄位ID
,CreatedAt
,UpdatedAt
,DeletedAt
,你可以將它嵌入你的模型,或者只寫你想要的欄位
// 基本模型的定義 type Model struct { ID uint `gorm:"primary_key"` CreatedAt time.Time UpdatedAt time.Time DeletedAt *time.Time } // 新增欄位 `ID`, `CreatedAt`, `UpdatedAt`, `DeletedAt` type User struct { gorm.Model Name string } // 只需要欄位 `ID`, `CreatedAt` type User struct { ID uint CreatedAt time.Time Name string }
type User struct {} // 預設表名是`users` // 設定User的表名為`profiles` func (User) TableName() string { return "profiles" } func (u User) TableName() string { if u.Role == "admin" { return "admin_users" } else { return "users" } } // 全域性禁用表名複數 db.SingularTable(true) // 如果設定為true,`User`的預設表名為`user`,使用`TableName`設定的表名不受影響
您可以通過定義DefaultTableNameHandler
對預設表名應用任何規則。
gorm.DefaultTableNameHandler = func (db *gorm.DB, defaultTableName string) string { return "prefix_" + defaultTableName; }
type User struct { ID uint // 列名為 `id` Name string // 列名為 `name` Birthday time.Time // 列名為 `birthday` CreatedAt time.Time // 列名為 `created_at` } // 重設列名 type Animal struct { AnimalId int64 `gorm:"column:beast_id"` // 設定列名為`beast_id` Birthday time.Time `gorm:"column:day_of_the_beast"` // 設定列名為`day_of_the_beast` Age int64 `gorm:"column:age_of_the_beast"` // 設定列名為`age_of_the_beast` }
type User struct { ID uint // 欄位`ID`為預設主鍵 Name string } // 使用tag`primary_key`用來設定主鍵 type Animal struct { AnimalId int64 `gorm:"primary_key"` // 設定AnimalId為主鍵 Name string Age int64 }
建立具有CreatedAt
欄位的記錄將被設定為當前時間
db.Create(&user) // 將會設定`CreatedAt`為當前時間 // 要更改它的值, 你需要使用`Update` db.Model(&user).Update("CreatedAt", time.Now())
儲存具有UpdatedAt
欄位的記錄將被設定為當前時間
db.Save(&user) // 將會設定`UpdatedAt`為當前時間 db.Model(&user).Update("name", "jinzhu") // 將會設定`UpdatedAt`為當前時間
刪除具有DeletedAt
欄位的記錄,它不會衝資料庫中刪除,但只將欄位DeletedAt
設定為當前時間,並在查詢時無法找到記錄,請參閱[軟刪除]
以上就是golang gorm模型結構體的定義範例的詳細內容,更多關於golang gorm模型結構體的資料請關注it145.com其它相關文章!
相關文章
<em>Mac</em>Book项目 2009年学校开始实施<em>Mac</em>Book项目,所有师生配备一本<em>Mac</em>Book,并同步更新了校园无线网络。学校每周进行电脑技术更新,每月发送技术支持资料,极大改变了教学及学习方式。因此2011
2021-06-01 09:32:01
综合看Anker超能充系列的性价比很高,并且与不仅和iPhone12/苹果<em>Mac</em>Book很配,而且适合多设备充电需求的日常使用或差旅场景,不管是安卓还是Switch同样也能用得上它,希望这次分享能给准备购入充电器的小伙伴们有所
2021-06-01 09:31:42
除了L4WUDU与吴亦凡已经多次共事,成为了明面上的厂牌成员,吴亦凡还曾带领20XXCLUB全队参加2020年的一场音乐节,这也是20XXCLUB首次全员合照,王嗣尧Turbo、陈彦希Regi、<em>Mac</em> Ova Seas、林渝植等人全部出场。然而让
2021-06-01 09:31:34
目前应用IPFS的机构:1 谷歌<em>浏览器</em>支持IPFS分布式协议 2 万维网 (历史档案博物馆)数据库 3 火狐<em>浏览器</em>支持 IPFS分布式协议 4 EOS 等数字货币数据存储 5 美国国会图书馆,历史资料永久保存在 IPFS 6 加
2021-06-01 09:31:24
开拓者的车机是兼容苹果和<em>安卓</em>,虽然我不怎么用,但确实兼顾了我家人的很多需求:副驾的门板还配有解锁开关,有的时候老婆开车,下车的时候偶尔会忘记解锁,我在副驾驶可以自己开门:第二排设计很好,不仅配置了一个很大的
2021-06-01 09:30:48
不仅是<em>安卓</em>手机,苹果手机的降价力度也是前所未有了,iPhone12也“跳水价”了,发布价是6799元,如今已经跌至5308元,降价幅度超过1400元,最新定价确认了。iPhone12是苹果首款5G手机,同时也是全球首款5nm芯片的智能机,它
2021-06-01 09:30:45