10

私は最近 Golang を使い始め、ORM として GORM を試してみることにしました。ほとんどの場合はうまく機能しますが、ほとんどの ORM では制限がある場合があります。幸いなことに、データベース/SQL と非常によく結びついているため、カスタム クエリを簡単に実行できます。

ゴームでこれを行う他の方法があるかどうか疑問に思っています:私は構造会社を持っています。会社は、電子メール、住所、電話と1対多の関係を持っています。gorm で次のコードを使用して、企業のリストとそれに対応する情報を取得します。gormのプリロード機能を利用しています。

db.DBAccess.
    Model(&companies).
    Count(&dbInfo.Count).
    Order("companies.id asc").
    Offset(offset).
    Limit(length).
    Preload("Addresses").
    Preload("Phones").
    Preload("Emails").
    Find(&companies)

これは完全に正常に機能します。ただし、プリロード機能なしでこれを達成する別の方法があるように感じます。何か案は?

4

1 に答える 1

2

ドキュメントに示されているようにDB.Relatedを使用して、後で関連エンティティをロードできます(必要な場合のみ) 。

// User has many emails
db.Model(&user).Related(&emails)
//// SELECT * FROM emails WHERE user_id = 111;
// user_id is the foreign key, 111 is user's primary key's value

// Specify the foreign key
db.Model(&user).Related(&emails, "ProfileId")
//// SELECT * FROM emails WHERE profile_id = 111;
// profile_id is the foreign key, 111 is user's primary key's value

ドキュメントには別の方法はありません。

于 2015-09-04T14:29:07.210 に答える