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