Det ser ud til, at du vil gøre to ting med det, du har:(1) opdatere modellen, så du har den rigtige relationsbinding, og (2) brug .Preload() metode, hvis du forsøger at få den til at knytte dataene ved læsning.
Modelændringer
Gorm udleder automatisk relationer baseret på navnet på attributterne i din struktur og navnet på den refererede struktur. Problemet er, at Google attribut af typen GoogleAccount forbinder ikke, fordi gorm leder efter en type Google struct .
Du mangler også en fremmednøgle på GoogleAccount . Hvordan ville ORM'en vide, hvilken GoogleAccount at associere med hvilken Client ? Du skal tilføje et ClientId til din GoogleAccount strukturdefinition.
Jeg ville også ændre de primære nøgler, du bruger, til at skrive uint da det er det, gorm er standard til (medmindre du har en god grund til ikke at bruge det)
Hvis jeg var dig, ville jeg ændre mine strukturdefinitioner til følgende:
type Client struct {
IdClient uint `gorm:"primary_key"`
Name string
PhotoUrl string
ApprovalNumber uint16
Phone string
Password string
HoursOfNotice int8
GoogleAccount GoogleAccount // Change this to `GoogleAccount`, the same name of your struct
}
type GoogleAccount struct {
Id uint
ClientId uint // Foreign key
Token string
}
For mere information om dette, tag et kig på foreningens dokumentation her:https://gorm. io/associations.html#has-one
Forudindlæser tilknytninger
Nu hvor du faktisk har dem korrekt relateret, kan du .Preload() få det indlejrede objekt, du ønsker:
db.Preload("GoogleAccount").First(&user)
Brug af .Preload() vil udfylde user.GoogleAccount attribut med den korrekt tilknyttede GoogleAccount baseret på ClientId .
For mere information om dette, tag et kig på forhåndsindlæsningsdokumentationen:https://gorm .io/crud.html#preloading-eager-loading