gorm.Model
gorm.Model
はID
, CreatedAt
, UpdatedAt
, DeletedAt
というフィールドを持つ、GoのStructです。
It may be embedded into your model or you may build your own model without it.
// gorm.Modelの定義 |
主キーとしてのID
GORMはデフォルトではID
という名前のフィールドをテーブルの主キーとして扱います。
type User struct { |
複数形のテーブル名
テーブル名は、Struct名の複数形が使われます。
type User struct {} // デフォルトのテーブル名は `users`です |
テーブル名の指定
// User構造体の定義を使って`deleted_users`テーブルを作成します |
デフォルトのテーブル名の変更
DefaultTableNameHandler
を定義すると、デフォルトのテーブル名の生成ルールを変更できます。
gorm.DefaultTableNameHandler = func (db *gorm.DB, defaultTableName string) string { |
スネークケースのカラム名
カラム名はスネークケース化されたフィールド名になります。
type User struct { |
タイムスタンプの追跡
CreatedAt
CreatedAt
フィールドの持つモデルでは、レコードの初回生成時に現在時刻が設定されます。
db.Create(&user) // `CreatedAt`には現在時刻が設定されます |
UpdatedAt
UpdatedAt
フィールドを持つモデルでは、レコード保存時に現在時刻が設定されます
db.Save(&user) // `UpdatedAt`に現在時刻を設定します |
DeletedAt
モデルにDeletedAt
フィールドが存在する場合、Delete
が呼ばれても実際にはデータベースからデータは削除されません。代わりにDeletedAt
にDelete
が呼ばれた時の時刻がセットされます。 Refer to Soft Delete