在gorm v1中,如果您使用db.table()指定表名,并尝试在该查询中使用preload()来预加载关联的模型,那么db.table()指定的表名将被忽略,并将默认使用模型的表名。

这是因为preload()方法需要知道模型的表名,以便正确地生成关联查询。因此,如果您希望指定表名并预加载关联的模型,您可以考虑手动编写关联查询,而不是使用preload()方法。例如:

db.Table("my_table").
    Joins("JOIN related_table ON my_table.related_id = related_table.id").
    Preload("RelatedModel")

在这个例子中,我们手动编写了关联查询,使用了db.Table()来指定表名,而不是使用preload()方法。然后,我们可以使用Preload()方法来预加载RelatedModel。

请注意,手动编写关联查询可能会更加复杂和容易出错。因此,只有在必要时才应使用此方法。

gorm v1 中 使用dbtable指定表名和preload一起使用时dbtable指定失效

原文地址: https://www.cveoy.top/t/topic/FPF 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录