golang gorm多條件篩選查詢操作

2022-09-22 01:12:08 字數 2404 閱讀 6119

案例:

檢視陌陌的動態依次可以按照發布時間,性別,城市進行篩選

如圖進行篩選

method chaining,gorm 實現了鏈式操作介面,所以你可以把**寫成這樣:

// 建立乙個查詢

tx := db.where("name = ?", "jinzhu")

// 新增更多條件

if somecondition else

if yetanothercondition

結合篩選動態的案例,**如下:

func (xy *topic) gettopiclistbytimegenderaddress(createtime, gender int, date, cityname string, adsid int64) (topiclist topic)

//按照建立時間篩選

if createtime > 0 else

if gender > 0

if cityname != ""

tx = tx.preload("towww.cppcns.compicimageslist")

tx.find(&topiclist).recordnotfound()

return topiclist

}補充:golang: gorm不定條件查詢和分頁操作

gorm+gin不定條件查詢和分頁操作

不定引數引數多用於table在後端的多條件篩選,這樣的場景是無法預知使用者需要使用那些篩選條件.只有當引數傳遞給後端時才清楚.所以後端需要根據傳遞的引數動態生成符合查詢條件的sql語句或者orm操作.

在gorm可以分別任選上述兩種中的任意一種:

1.orm操作;

2.拼接原生sql語句;

本文建議大家使用orm操作,以使用者結構user為例,假設user的格式如下:

type user struct

假設age,name和num是不定查詢條件,前端的請求格式如下:

後端邏輯處理如下.

var db *gorm.db // 已經進行了db的初始化操作,db為全域性變數

}請求url後,可以看到在除錯模式下sql的執行語句是:

[2018-09-03 18:47:26] [1.03ms] select * from `users` where `users`.`deleted_at` is null and ((age = '26') and (name = 'zhangchi'))

[13 rows affected or returned ]

[gin] 2018/09/03 - 18:47:26 | 200 | 1.263889ms | 127.0.0.1 | get /user/?age=26&name=zhangchi

這裡需要注意乙個細節,首先將全域性的db變數賦值給了db,如果用db直接進行操作,那一系列的賦值語句將會影響db的位址,影響後續的資料庫操作.

db := db

分頁操作是為了減少前端對後端請求的壓力,對於乙個系統,為了提高訪問效率,不需要每次從後端請求全量的資料,採用分頁的方式,獲取指定頁碼的資料,頁數(page)和每頁的大小(page_size)都可以單獨指定.

分頁操作和不定條件查詢可以同時存在,所以在上述的**上繼續進行累加.組合成乙個獲取指定條件user列表的介面:

}最核心的**如下:

if page > 0 && pagesize > 0

limit定位每頁大小, offset定位偏移的查詢位置.並且先進行條件篩選,最後做分頁操作.

分頁和不定條件查詢主要是配合前端的table進行操作,使用者可以根據所需的條件進行篩選.為了提高訪問效率,可以指定table的每頁大小.

本文標題: golang gorm多條件篩選查詢操作

本文位址:

php多條件篩選

php獲取當前url路徑的函式及伺服器變數 server query string 查詢 query 的字串 server request uri 訪問此頁面所需的uri server script name 包含當前指令碼的路徑 server php self 當前正在執行指令碼的檔名 案例 適用...

excel多條件篩選公式

目標 實現用公式多條件篩選資料,比如有很多個工作簿,每個工作簿都有以下資料。ab cd10 12442 12355 3234 66找出a列為0,b列為1,c列為2的那一行,也就是第一行,輸出d列資料44。最後彙總到乙個工作表裡。方法 1 使用以下方法將所有工作表合併到乙個工作表裡,其中第乙個工作簿為...

多條件篩選的實現

conditions array price color metal 要進行篩選的字段放在這裡 price color metal 先給需要篩選的字段賦空值,這些值將輸出到頁面的hidden fileds中 以下迴圈給已經進行的篩選賦值,以便能夠在下一次篩選中保留 foreach condition...