如何使用GORM对不同名称的字段引用执行连接查询



如何使用GORM对不同名称的字段引用执行连接查询像这样:

SELECT * FROM tickets JOIN ticket_details ON tickets.ticket_id = ticket_details.ticket_id JOIN users ON tickets.create_user = users.user_id JOIN employees ON users.employee_id = employees.employee_id

门票。create_user = users.user_id没有foreignkey

您可以使用" join ">

https://gorm.io/docs/query.html连接

您提供的查询应该使用这种join来完成:

db.Model(...).Joins("JOIN ticket_details ON tickets.ticket_id = ticket_details.ticket_id").Joins("JOIN users ON tickets.create_user = users.user_id").Joins("JOIN employees ON users.employee_id = employees.employee_id")...

如果你想在你的模型中设置门票和用户之间的关系

我假设关系是User "has many"票

,模型User/Ticket的ID为int64

则可以通过设置格式"foreignKey"one_answers"references">

https://gorm.io/docs/has_many.html Override-Foreign-Key

https://gorm.io/docs/has_many.html Override-References

type Ticket struct {
TicketId int64 `gorm:"primaryKey"`
CreateUser int64
}
type User struct {
UserId  int64    `gorm:"primaryKey"`
Tickets []Ticket `gorm:"foreignKey:CreateUser;references:UserId"`
}

,那么你应该能够像这样查询用户的票

var users []User
db.Joins("Tickets").Find(&users)