gormを使用してデータベースをマッピングしています。GORMから多対多の結果を取得する
多対多の関係を持つ2つのテーブル(service
とresource
)があります。私は、次のようなコードでそれらをモデル化しています:
type Service struct {
BaseModel
Name string `gorm:"not null;unique_index"`
Resources []Resource `gorm:"many2many:service_resource"`
}
type Resource struct {
BaseModel
Name string `gorm:"not null;unique_index"`
}
GORMのAutoMigrate次の表が作成されている使用:
は(私ものidの主キーを追加するために、生のSQLクエリを実行します。
service := Service{
Name: "core",
Resources: []Resource{
{Name: "ec2"},
{Name: "dynamo"},
},
}
db.Create(&service)
:マッピングテーブル)
は、新しいサービスを作成するために、私は次のコードを使用します
これは、サービスと一緒にすべてのリソースを作成し、それらの間の関係を期待通りにservice_resource
テーブルに入力します。
しかし、私の問題は、私がサービスを照会しているときです。私はすべてのサービスを取得するには、次のコードを使用します。
services := []model.Service{}
db.Find(&services)
これは、サービスの配列は、人口で正常に返しますが、各サービスのResources
配列が空である:
"services": [
{
"ID": 1,
"Name": "core",
"Resources": null
},
...
]
私はGORMという仮定の下にありましたそれを自動的に入力します。私は行方不明のいくつかのステップがありますか?