我的場(chǎng)景是我有一個(gè)帶有搜索選項(xiàng)的網(wǎng)格,用戶可以在其中選擇列并進(jìn)行搜索,網(wǎng)格數(shù)據(jù)來自各種表。我附上了網(wǎng)格示例屏幕。所以我正在嘗試為搜索創(chuàng)建一個(gè)動(dòng)態(tài)查詢,但問題是我只能在主表 (schema.Robot) 中搜索,而不能在 Preload 表中搜索。每當(dāng)我嘗試從 Preload 表中搜索數(shù)據(jù)時(shí),讓我們從 RobotModel 表中說那個(gè)時(shí)間低于錯(cuò)誤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 變量中,我存儲(chǔ)了我的動(dòng)態(tài)查詢。我的問題是如何搜索預(yù)加載表列的數(shù)據(jù)
1 回答

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