gorm 不设置外键可以关联查询吗 ?

gorm 不设置外键可以关联查询吗 ? 在 php 中是可以的如: laravel 中设置 hasMamy 时候不用设置外键

pardon110
最佳答案

laravel 中你设置 hasmany 其实是隐性地设置外键了,laravel 底层通过惯例推断出关联关系,外键设置等操作。golang 目前并不能通过反射动态生成一个未显性定义的结构体类型),通常需要用结构体标签的形式显性定义关联关系。如果不想设置外键进行关联查询,你可以考虑 gorm 自带的查询表达式语句,类似 yii 那样构建查询条件对象。本质上,最终向数据库提交的 sql 还是会用到外键。或者扩展 gorm 与查询相关钩子函数,做成像 laravel 类似的操作。

5年前 评论
讨论数量: 3
pardon110

laravel 中你设置 hasmany 其实是隐性地设置外键了,laravel 底层通过惯例推断出关联关系,外键设置等操作。golang 目前并不能通过反射动态生成一个未显性定义的结构体类型),通常需要用结构体标签的形式显性定义关联关系。如果不想设置外键进行关联查询,你可以考虑 gorm 自带的查询表达式语句,类似 yii 那样构建查询条件对象。本质上,最终向数据库提交的 sql 还是会用到外键。或者扩展 gorm 与查询相关钩子函数,做成像 laravel 类似的操作。

5年前 评论

@pardon110 我现在数据库中很多表都是没有设置外键的, 如果需要关联查询,只能用原声 sql 了吗?

5年前 评论
ALMAS

@linzi 做关联查询不一定在数据库中设置外键,只在结构体中做映射即可。具体的看看 gorm 文档

5年前 评论