Попробуйте явно добавить внешние ключи и ON DELETE CASCADE
к вашим моделям.Я обнаружил, что GORM может быть сомнительным, когда он относится к такого рода вещам, но выполнение этого явно всегда заставляет его работать.
Например:
type Person struct {
ID int
Bio Biography `gorm:"Foreignkey:PersonID;"`
Name string
}
type Biography struct {
ID int
Content string
PersonID int `sql:"type:bigint REFERENCES people(id) ON DELETE CASCADE"`
}
Примечание: вынеобходимо указать, как будет называться фактический столбец и таблица базы данных, а не поле.Поскольку GORM автоматически множит и преобразует таблицы в snake_case, я ссылаюсь на столбец people(id)
.Если вы перезаписали эту функцию, используйте любое имя таблицы и столбца.