gorm v1 中 使用dbtable指定表名和preload一起使用时dbtable指定失效
在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。
请注意,手动编写关联查询可能会更加复杂和容易出错。因此,只有在必要时才应使用此方法。
原文地址: https://www.cveoy.top/t/topic/FPF 著作权归作者所有。请勿转载和采集!