ID
作為主鍵
GORM 預設使用名稱為 ID
的欄位作為資料表的「主鍵」。
type User struct { |
你可以使用標籤 primaryKey
將其他欄位設定為主鍵
// Set field `UUID` as primary field |
另請參閱 複合主鍵
複數資料表名稱
GORM 會將結構名稱複數化為 snake_cases
作為資料表名稱,例如結構 User
,其資料表名稱依慣例為 users
資料表名稱
你可以透過實作 Tabler
介面來變更預設資料表名稱,例如
type Tabler interface { |
注意
TableName
不允許動態名稱,其結果會快取供未來使用,若要使用動態名稱,你可以使用Scopes
,例如
func UserTable(user User) func (tx *gorm.DB) *gorm.DB { |
暫時指定名稱
使用 Table
方法暫時指定資料表名稱,例如
// Create table `deleted_users` with struct User's fields |
請參閱 子查詢,了解如何在 FROM 子句中使用子查詢
命名策略
GORM 允許使用者透過覆寫預設 NamingStrategy
來變更預設命名慣例,此策略用於建立 TableName
、ColumnName
、JoinTableName
、RelationshipFKName
、CheckerName
、IndexName
,請參閱 GORM 設定 以取得詳細資料
欄位名稱
依慣例,資料庫欄位名稱使用欄位名稱的 snake_case
。
type User struct { |
你可以使用標籤 column
覆寫欄位名稱,或使用 NamingStrategy
type Animal struct { |
時間戳記追蹤
CreatedAt
對於有 CreatedAt
欄位的模型,如果其值為零,則在首次建立記錄時,該欄位將設定為目前時間
db.Create(&user) // set `CreatedAt` to current time |
您可以透過設定 autoCreateTime
標籤為 false
來停用時間戳記追蹤,例如
type User struct { |
UpdatedAt
對於有 UpdatedAt
欄位的模型,如果其值為零,則在更新或建立記錄時,該欄位將設定為目前時間
db.Save(&user) // set `UpdatedAt` to current time |
您可以透過設定 autoUpdateTime
標籤為 false
來停用時間戳記追蹤,例如
type User struct { |
注意 GORM 支援擁有多個時間追蹤欄位,並使用 UNIX(奈秒/毫秒)秒數追蹤,請查看 模型 以取得更多詳細資訊