IDを主キーとして
GORMはデフォルトで、IDという名前のフィールドをテーブルの主キーとして使用します。
type User struct { |
primaryKeyタグを使用して、他のフィールドを主キーとして設定できます。
// Set field `UUID` as primary field |
詳しくは複合主キーもご覧ください。
複数形テーブル名
GORMは、構造体の名前をsnake_cases形式のテーブル名に変換します。構造体Userの場合、規約によりテーブル名はusersになります。
TableName
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句でサブクエリを使用する方法については、サブクエリからの取得をご覧ください。
NamingStrategy
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(ナノ/ミリ)秒でトラッキングします。モデルで詳細を確認してください。