我有一个带有预加载的GORM查询,它工作得很好,因为我将其绑定到一个名为“companies”的结构,这也是相应数据库表的名称:
var companies []Company
db.Preload("Subsidiaries").Joins("LEFT JOIN company_prod ON company_products.company_id = companies.id").Where("company_products.product_id = ?", ID).Find(&companies)
现在我想做类似的事情,但将结果绑定到一个没有引用“companies”表的名称的结构:
var companiesFull []CompanyFull
db.Preload("Subsidiaries").Joins("LEFT JOIN company_prod ON company_products.company_id = companies.id").Where("company_products.product_id = ?", ID).Find(&companies)
为了更好地理解,我简化了第二个调用,真正的调用有更多的JOIN并返回更多的数据,因此它不能绑定到“公司”结构。
但是我收到一个错误:
column company_subsidiaries.company_full_id does not exist
相应的 SQL 查询:
SELECT * FROM "company_subsidiaries" WHERE "company_subsidiaries"."company_full_id" IN (2,1)
没有“company_subsidiaries.company_full_id”,正确的查询应该是:
SELECT * FROM "company_subsidiaries" WHERE "company_subsidiaries"."company_id" IN (2,1)
该条件显然是从结果绑定到的结构的名称生成的。有没有办法为此情况指定自定义名称?
我知道Tabler接口技术,但是它不适用于预加载,我相信(尝试过,它更改了主查询的表名,但不会更改预加载)。
猛跑小猪
相关分类