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

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

不符合在 golang 中使用 gorm 的條件

不符合在 golang 中使用 gorm 的條件

Go
哆啦的時(shí)光機(jī) 2022-11-23 20:01:14
我有兩個(gè)數(shù)據(jù)庫 Booking 和 Room。Booking 將 roomid 作為其字段之一。我寫了一個(gè) select 語句,它將檢索到的行保存在結(jié)果變量中,如下所述。var result models.Bookingrows, err := utils.DB.Model(&currRequest).Where("check_in BETWEEN ? AND ? AND check_out BETWEEN ? AND ?", currRequest.CheckIn, currRequest.CheckOut, currRequest.CheckIn, currRequest.CheckOut).Select("room_id").Rows()for rows.Next() {            utils.DB.ScanRows(rows, &result)            fmt.Println(result.RoomID)        }現(xiàn)在我的 result.roomid 具有滿足 bookings 表中的 select 語句的 roomids 值我的結(jié)果變量可能有多個(gè)房間 ID 值。我能夠通過遍歷結(jié)果變量來檢索 roomid 值?,F(xiàn)在我必須檢查名為 Room 的主房間數(shù)據(jù)庫,并獲取那些不在結(jié)果結(jié)構(gòu)中的房間 ID。通過使用以下語句,我只能訪問 result.roomid 中的第一個(gè)值,因此 not in 條件僅考慮 result.roomid 中的第一個(gè)值。我如何對(duì) result.roomid 中的所有值執(zhí)行不符合條件?rows, err := utils.DB.Model(&models.Room{}).Not(result.RoomID).Select("room_id").Rows()完整代碼:package handlersimport (    "encoding/json"    "fmt"    "net/http"    "server/models"    "server/utils"    "strings")func AvailableRoomsHandler(w http.ResponseWriter, r *http.Request) {    currRequest := &models.Booking{}    err := json.NewDecoder(r.Body).Decode(currRequest)    //check if a valid request has been sent from front end    if err != nil {        //fmt.Println(err)        var resp = map[string]interface{}{"status": false, "message": "Invalid json request"}        json.NewEncoder(w).Encode(resp)        return    }當(dāng)我執(zhí)行 result.roomid 時(shí),它只給出第一個(gè)房間 ID,并在上面的 select 語句中只刪除那個(gè)房間 ID。如何消除我在房間表數(shù)據(jù)中的預(yù)訂表中找到的所有房間 ID?我嘗試拆分 result.roomid 值并嘗試形成一個(gè)字符串并在 select 語句中給出它,但這沒有用。我嘗試遍歷每個(gè) result.roomid 并在語句中運(yùn)行 not 但這沒有任何意義。
查看完整描述

1 回答

?
慕斯王

TA貢獻(xiàn)1864條經(jīng)驗(yàn) 獲得超2個(gè)贊

使用此代碼:


var result models.Booking

rows, err := utils.DB.Model(&currRequest).Where("check_in BETWEEN ? AND ? AND check_out BETWEEN ? AND ?", currRequest.CheckIn, currRequest.CheckOut, currRequest.CheckIn, currRequest.CheckOut).Select("room_id").Rows()

if err != nil {

        json.NewEncoder(w).Encode(err)

        fmt.Print("error occured in select statement")

        return

} else {

        defer rows.Close()

        for rows.Next() {

            noOfRoomsOccupied = noOfRoomsOccupied + 1

            utils.DB.ScanRows(rows, &result)

            //rest of the code

        }

}

您只能從結(jié)果集中獲得一行,其中可能有很多行。要獲取所有行并提取它們的值,您應(yīng)該使用[]models.Booking.


result := []models.Booking{}

rows, err := utils.DB.Model(&currRequest).Where("check_in BETWEEN ? AND ? AND check_out BETWEEN ? AND ?", currRequest.CheckIn, currRequest.CheckOut, currRequest.CheckIn, currRequest.CheckOut).Select("room_id").Rows()

if err != nil {

        json.NewEncoder(w).Encode(err)

        fmt.Print("error occured in select statement")

        return

} else {

        defer rows.Close()

        for rows.Next() {

            var b models.Booking

            noOfRoomsOccupied = noOfRoomsOccupied + 1

            utils.DB.ScanRows(rows, &b)

            result = append(result, b)

            //rest of the code

        }

}

但是,由于無論如何你只需要,你可以通過使用(假設(shè)is 類型)roomid使它更容易。[]uintroomiduint


result := []uint{}

rows, err := utils.DB.Model(&currRequest).Where("check_in BETWEEN ? AND ? AND check_out BETWEEN ? AND ?", currRequest.CheckIn, currRequest.CheckOut, currRequest.CheckIn, currRequest.CheckOut).Select("room_id").Rows()

if err != nil {

        json.NewEncoder(w).Encode(err)

        fmt.Print("error occured in select statement")

        return

} else {

        defer rows.Close()

        for rows.Next() {

            var rid uint

            noOfRoomsOccupied = noOfRoomsOccupied + 1

            utils.DB.ScanRows(rows, &rid)

            result = append(result, rid)

            //rest of the code

        }

}

隨著resulttype 的存在[]uint,將它與Not函數(shù)一起使用會(huì)更容易(根據(jù)文檔):


rows, err := utils.DB.Model(&models.Room{}).Not(result).Select("room_id").Rows()


查看完整回答
反對(duì) 回復(fù) 2022-11-23
  • 1 回答
  • 0 關(guān)注
  • 180 瀏覽

添加回答

舉報(bào)

0/150
提交
取消
微信客服

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

幫助反饋 APP下載

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

公眾號(hào)

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