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(ナノ/ミリ)秒でトラッキングします。モデルで詳細を確認してください。