第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號(hào)安全,請(qǐng)及時(shí)綁定郵箱和手機(jī)立即綁定
已解決430363個(gè)問題,去搜搜看,總會(huì)有你想問的

使用 gorm golang 在多個(gè)表中進(jìn)行動(dòng)態(tài)列搜索

使用 gorm golang 在多個(gè)表中進(jìn)行動(dòng)態(tài)列搜索

Go
慕雪6442864 2023-06-12 15:20:35
我的場(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)該很容易。


查看完整回答
反對(duì) 回復(fù) 2023-06-12
  • 1 回答
  • 0 關(guān)注
  • 220 瀏覽
慕課專欄
更多

添加回答

舉報(bào)

0/150
提交
取消
微信客服

購(gòu)課補(bǔ)貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動(dòng)學(xué)習(xí)伙伴

公眾號(hào)

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號(hào)