Я немного играю с Гормом, пытаясь решить, какая библиотека ORM лучше всего подходит для моих нужд.
Важно отметить, что в настоящее время я работаю со Sqlite.
Следуя руководству, я создал две структуры:
type Color struct {
gorm.Model
UserID uint
Name string
}
//User struct define a basic user model
type User struct {
gorm.Model
Username string
Email string
FirstName string
LastName string
Password string
CreationDate time.Time
DOB time.Time
IgnoreMe int `gorm:"-"` // Ignore this field
Color Color `gorm:"foreignkey:ColorRefer"`
ColorRefer uint
}
когда я создаю БД с
func CreateTables() {
user := dm.User{}
color := dm.Color{}
GormDB.CreateTable(&color)
GormDB.CreateTable(&user)
GormDB.Model(&user).AddForeignKey("ColorRefer", "colors(id)", "CASCADE", "CASCADE")
}
или с:
func CreateTables() {
GormDB.AutoMigrate(&dm.User{},&dm.Color{})
}
К сожалению, он не работает, как я ожидал, и автоматически создает внешний ключ, но работает, когда я делаю это вручную.
Моя главная проблема - когда я пытаюсь запросить пользователей
//QueryByStructExample query users table by the struct non-zero (non-default) fields.
func QueryByStructExample(userStruct dm.User) []dm.User {
var results []dm.User
GormDB.Where(userStruct).Find(&results)
return results
}
Я создал следующую функцию, пытаясь запросить пользователей по электронной почте со свойством color, которое является моей структурой цвета , и я попытался поиграть с функциями Model, Related и Association, и кажется, ничего не работает и (я избегаю использовать соединение по назначению).
Конечным результатом является то, что он запрашивает моего пользователя, но без цвета (только с идентификатором в моем colorRefer)
есть предложения?