Ich fing vor kurzem an, Golang zu benutzen und entschied mich, GORM als ORM auszuprobieren. Es funktioniert ziemlich gut auf den meisten Dingen, aber wie die meisten ORMs sind manchmal begrenzt. Zum Glück knüpft es sehr gut an Datenbank/SQL an, so dass ich leicht benutzerdefinierte Abfragen ausführen kann.Gorm Golang holt eine Sammlung und ihre Beziehungen
Ich frage mich, ob es eine andere Möglichkeit gibt, dies in Gorm zu tun: Ich habe eine Struktur Unternehmen, Unternehmen haben eine zu viele Beziehungen w/E-Mails, Adressen und Telefone. Ich benutze den folgenden Code in gorm, um eine Liste von Unternehmen und ihre entsprechenden Informationen zu ziehen. Ich benutze Gorms Preload-Funktion.
db.DBAccess.
Model(&companies).
Count(&dbInfo.Count).
Order("companies.id asc").
Offset(offset).
Limit(length).
Preload("Addresses").
Preload("Phones").
Preload("Emails").
Find(&companies)
Das funktioniert einwandfrei. Ich habe jedoch das Gefühl, dass es eine andere Möglichkeit gibt, dies ohne die Preload-Funktion zu erreichen. Irgendwelche Ideen?
Was haben Sie vor? Ich allgemein könnte Sie eine Abfrage Callback implementieren, aber ich denke nicht, dass die Mühe wert. Automatisches Lazy-Laden ist nicht möglich, da in den Feldern von Strukturen kein Interceptionsmechanismus vorhanden ist. – 0x434D53
Können Sie eine Probe der Modelle geben? Ich würde erwarten, dass es diese ohne einen expliziten Aufruf von 'Preload 'lädt, solange die Beziehung korrekt angegeben ist. Wenn nicht, sollte eine Option wie 'CascadingRead' zum Paket hinzugefügt werden, die eine rekursive Instanziierung verursacht, anstatt mir ein Objekt mit leeren Arrays zurückzugeben, das die vielen Elemente enthalten sollte, mit denen mein aktuelles Objekt Fremdschlüsselbeziehungen hat. – evanmcdonnal