我有一个问题,因为我无法使用database.DB.Model(object.field.subfield).Related(&object.field.subfield.whatever)
访问数据库中的某些表。
我正在使用这些模型(简体):
type RunResult struct {
gorm.Model
TestRun TestRun
TestRunID uint
}
type TestRun struct {
gorm.Model
Stats Stats
}
type Stats struct {
gorm.Model
Scripts Stt
PreRequest Stt
Request Stt
Test Stt
Assertion Stt
ScriptsID uint
PreRequestID uint
RequestID uint
TestID uint
AssertionID uint
}
type Stt struct {
gorm.Model
Total int
Pending int
Failed int
}
我正在执行的查询是:
results := []model.RunResult{}
database.DB.Find(&results)
for _, result := range results {
database.DB.Model(result).Related(&result.TestRun)
database.DB.Model(result.TestRun).Related(&result.TestRun.Stats)
database.DB.Model(result.TestRun.Stats).Related(&result.TestRun.Stats.Scripts)
database.DB.Model(result.TestRun.Stats).Related(&result.TestRun.Stats.PreRequest)
database.DB.Model(result.TestRun.Stats).Related(&result.TestRun.Stats.Request)
database.DB.Model(result.TestRun.Stats).Related(&result.TestRun.Stats.Test)
database.DB.Model(result.TestRun.Stats).Related(&result.TestRun.Stats.Assertion)
checkResult(t, result)
}
最后,日志中的输出为:
SELECT * FROM "run_results" WHERE "run_results"."deleted_at" IS NULL
1 rows affected or returned
SELECT * FROM "test_runs" WHERE "test_runs"."deleted_at" IS NULL AND (("id" = '1'))
1 rows affected or returned
SELECT * FROM "stats" WHERE "stats"."deleted_at" IS NULL AND (("id" = '1'))
1 rows affected or returned
invalid association
invalid association
invalid association
invalid association
invalid association
因此,似乎主查询和两个first关联都可以正常工作,但是与Stt
结构的所有关系都不能正常运行。结构名称与之相关吗?我应该为每个Stt使用一个模型(我的意思是,脚本应该使用称为脚本的结构)吗?任何解决方案?
谢谢。