我的場景是我有一個帶有搜索選項的網格,用戶可以在其中選擇列并進行搜索,網格數據來自各種表。我附上了網格示例屏幕。所以我正在嘗試為搜索創建一個動態查詢,但問題是我只能在主表 (schema.Robot) 中搜索,而不能在 Preload 表中搜索。每當我嘗試從 Preload 表中搜索數據時,讓我們從 RobotModel 表中說那個時間低于錯誤pq:缺少表“robot_models”的 FROM 子句條目這是我的代碼func (r *RobotsRepository) GetRobotsSummary(listParams viewmodel.ListParams, companyID uint) ([]*schema.Robot, int, error) {mrobots := []*schema.Robot{}var count intvar order stringif listParams.SortColumn == "" {? ? listParams.SortColumn = "id"? ? listParams.SortOrder = 1} else {? ? listParams.SortColumn = util.Underscore(listParams.SortColumn)}if listParams.SortOrder == 0 {? ? order = "ASC"} else {? ? order = "DESC"}var searchQuery stringif listParams.SearchText != "" {? ? switch listParams.SearchColumn {? ? case "Robot":? ? ? ? listParams.SearchColumn = "name"? ? case "Model":? ? ? ? listParams.SearchColumn = "robot_models.name"? ? }? ? searchQuery = listParams.SearchColumn +" LIKE '%"+ listParams.SearchText +"%' and Company_ID = " + fmt.Sprint(companyID)}else{? ? searchQuery = "Company_ID = " + fmt.Sprint(companyID)}? ?orderBy := fmt.Sprintf("%s %s", listParams.SortColumn, order)err := r.Conn.? ? Preload("RobotModel", func(db *gorm.DB) *gorm.DB {? ? ? ? return db.Select("ID,Name")? ? }).? ? Preload("Task", func(db *gorm.DB) *gorm.DB {? ? ? ? return db.Where("Task_Status in ('In-Progress','Pending')").Select("ID, Task_Status")? ? }).? ? Preload("CreatedUser", func(db *gorm.DB) *gorm.DB {? ? ? ? return db.Select("ID,Display_Name")? ? }).? ? Preload("UpdatedUser", func(db *gorm.DB) *gorm.DB {? ? ? ? return db.Select("ID,Display_Name")? ? }).? ? Where(searchQuery).? ? Order(orderBy).? ? Offset(listParams.PageSize * (listParams.PageNo - 1)).? ? Limit(listParams.PageSize).? ? Find(&mrobots).Errorr.Conn.Model(&schema.Robot{}).Where(searchQuery).Count(&count)return mrobots, count, err?}在 searchQuery 變量中,我存儲了我的動態查詢。我的問題是如何搜索預加載表列的數據
1 回答

德瑪西亞99
TA貢獻1770條經驗 獲得超3個贊
即使您正在預加載,您仍然需要在對其他表的列進行過濾和排序時顯式使用連接。預加載用于預先加載數據以映射到您的模型中,而不是連接表。
鏈接這樣的東西:
.Joins("LEFT JOIN rfm.robot_models AS robot_models ON robot_models.id = robots.robot_model_id")
我不確定您是否可以使用AS
此技術使用關鍵字,但如果不能,相應地調整您的查詢應該很容易。
- 1 回答
- 0 關注
- 202 瀏覽
添加回答
舉報
0/150
提交
取消