ID
как первичный ключ
GORM использует поле с именем ID
в качестве первичного ключа таблицы по умолчанию.
type User struct { |
Вы можете установить другие поля в качестве первичного ключа при помощи тега primaryKey
// Установить поле `UUID` как первичный ключ |
Также смотрите Композитный первичный Ключ
Плюрализация имен таблиц
GORM плюрализует имя struct в snake_cases (правило именования)
в качестве имени таблицы, для stuct User
, название таблицы будет users
по умолчанию
TableName
Вы можете изменить название таблицы по умолчанию, реализуя интерфейс Tabler
, например:
type Tabler interface { |
ПРИМЕЧАНИЕ
TableName
не допускает динамическое имя, его результат будет кэшироваться на будущее, для использования динамического имени, вы можете использоватьScopes
, например:
func UserTable(user User) func (tx *gorm.DB) *gorm.DB { |
Временно указать имя
Временно указать имя таблицы с помощью метода Table
, например:
// Создать таблицу `deleted_users` с полями struct User |
Смотрите SubQuery для того, чтобы использовать SubQuery в выражении FROM
Стратегия именования
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
Название столбца
Имя столбца db использует имя поля в формате snake_case
с преобразованием.
type User struct { |
Вы можете переопределить имя столбца с помощью тега column
, или использовать NamingStrategy
type Animal struct { |
Отслеживание времени
CreatedAt
Для моделей, имеющих поле CreatedAt
, оно будет установлено в текущее время при создании записи, если её значение равно нулю
db.Create(&user) // установить`CreatedAt` в текущее время |
Вы можете отключить отслеживание временных меток, установив для тега autoCreateTime
значение false
, например так:
type User struct { |
UpdatedAt
Для моделей, имеющих поле UpdatedAt
, для поля будет установлено текущее время обновления или создания записи, если его значение равно нулю
db.Save(&user) // установит `updatedAt` на текущее время |
Вы можете отключить отслеживание временных меток, установив для тега autoUpdateTime
значение false
, например:
type User struct { |
ПРИМЕЧАНИЕ GORM поддерживает наличие нескольких полей отслеживания времени и отслеживание с помощью UNIX (nano/milli) секунд, проверьте Модели для получения более подробной информации