GORM 没有关联关系的多表联查
时间: 2023-09-12 13:10:19 浏览: 78
多表联合查询
在 GORM 中进行多表联查时,需要使用 Preload 或 Joins 方法来实现。Preload 方法会自动加载关联表的数据,而 Joins 方法则是通过 SQL 的 JOIN 操作来实现联查。
例如,假设我们有两个表 User 和 Order,它们之间的关系是一个用户可以有多个订单。我们可以使用 Preload 方法来查询某个用户及其所有订单的信息:
```go
var user User
db.Preload("Orders").Find(&user)
```
这样会先查询出用户信息,再自动查询出该用户的所有订单信息。
如果要使用 Joins 方法进行联查,可以这样写:
```go
var user User
var orders []Order
db.Joins("LEFT JOIN orders ON orders.user_id = users.id").Where("users.id = ?", userID).Find(&user).Find(&orders)
```
这样会执行一条 SQL 语句,查询出指定用户及其所有订单的信息。注意,这里使用了 LEFT JOIN 左连接,以便查询出所有订单信息,即使该用户没有任何订单。
阅读全文