1 回答

TA貢獻(xiàn)1995條經(jīng)驗(yàn) 獲得超2個(gè)贊
編輯:
根據(jù)以下所有答案,這里需要發(fā)生以下事情:
您需要將
Roles
結(jié)構(gòu)重命名為Role
您需要
Roles
為每個(gè)對(duì)象加載按特定角色 ID 過濾用戶
首先,您需要將Roles
結(jié)構(gòu)重命名為Role
,并更改對(duì)它的引用:
角色結(jié)構(gòu)
type Role struct {
gorm.Model
Name string `json:"name"`
Users []User `gorm:"many2many:user_roles"`
}
用戶結(jié)構(gòu)
type User struct {
gorm.Model
Email string `json:"email"`
Password string `json:"password"`
Token string `json:"bearer"`
FirstName string `json:"first_name"`
LastName string `json:"last_name"`
Phone string `json:"phone"`
SalesforceID string `json:"salesforce_id"`
WebflowID string `json:"webflow_id"`
Roles []Role `gorm:"constraint:OnUpdate:CASCADE,OnDelete:SET NULL;many2many:user_roles;"`
}
接下來,稍微修改一下您的代碼。這里有一個(gè)不需要的連接:
func (h *Handler) GetAllEmployeesByRoleID(c *gin.Context) {
var users []models.User
var roleID int = 1
//you need to extract roleID from your query string or request body
tx := h.db.DB.
Preload("Roles").
Joins("INNER JOIN user_roles ur ON ur.user_id = users.id").
Where("ur.role_id = ?", roleID).
Find(&users)
if tx.Error != nil {
//handle error
c.JSON(500, tx.Error)
return
}
c.JSON(200, users)
}
因此,您添加Preload("Roles")以加載用戶可以擁有的所有角色,正如我假設(shè)的那樣,即使您按 過濾roleID,您也希望查看用戶可以擁有的所有角色。
您可以使用JoinsandWhere來構(gòu)建您已經(jīng)使用過的類似查詢。A JOINwith the rolestable 不是必需的,因?yàn)槟趗ser_roles表格中有所需的信息。
- 1 回答
- 0 關(guān)注
- 155 瀏覽
添加回答
舉報(bào)