Жизненный цикл объекта
Хуки(Hooks) - это функции, вызываемые до или после создания/выборки/обновления/удаления.
Если вы определили специальные методы для модели, они будут вызываться автоматически при создании, обновлении, выборке, удалении, и если вызов специального метода возвращает ошибку, GORM остановит выполнение запроса и откатит текущую транзакцию.
Тип метода хука должен быть func(*gorm.DB) error
Хуки
Создать объект
Доступные хуки для создания
// начало транзакции |
Пример кода:
func (u *User) BeforeCreate(tx *gorm.DB) (err error) { |
ПРИМЕЧАНИЕ По умолчанию в GORM операции сохранения/удаления выполняются в транзакции, так что изменения, внесенные в эту транзакцию, не будут видны до тех пор, пока она не будет сохранена транзакция, если вы вернете ошибку в хуках, транзакция откатиться
func (u *User) AfterCreate(tx *gorm.DB) (err error) { |
Обновление объекта
Доступные хуки для обновления
// начинаем транзакцию |
Пример кода:
func (u *User) BeforeUpdate(tx *gorm.DB) (err error) { |
Удаление объекта
Доступные хуки для удаления
// начинаем транзакцию |
Пример кода:
// Обновление данных в той же транзакции |
Запрос объекта
Доступные хуки для выборки
// загрузка данных из базы данных |
Пример кода:
func (u *User) AfterFind(tx *gorm.DB) (err error) { |
Изменить текущую операцию
func (u *User) BeforeCreate(tx *gorm.DB) error { |