主キーとしての ID
GORMはデフォルトで、テーブルの主キーとして ID
という名前のフィールドを使用します。
type User struct { |
他のフィールドを primaryKey
タグで主キーとして設定できます
// Set field `UUID` as primary field |
Composite Primary Key も参照してください。
複数形のテーブル名
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句でサブクエリを使用する方法については、 From SubQuery を参照してください。
NamingStrategy
GORM allows users to change the default naming conventions by overriding the default NamingStrategy
, which is used to build TableName
, ColumnName
, JoinTableName
, RelationshipFKName
, CheckerName
, IndexName
, Check out GORM Config for details
カラム名
規約に従い、データベースのカラム名はフィールド名の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(ナノ/ミリ)秒でタイムトラッキングすることが可能です。詳細については Models をチェックしてください。