GORM v1 中 db.table() 指定表名与 preload() 同时使用时失效问题
在 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/lVX7 著作权归作者所有。请勿转载和采集!