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) секунд, проверьте Модели для получения более подробной информации