解決goxorm無(wú)法更新值為默認(rèn)值的問(wèn)題
今天遇到個(gè)問(wèn)題,goxorm無(wú)法更新某一個(gè)字段為0.
xxTable := &models.XXTable{Visible: visible}
affected, err := eng.Where("id=?", id).Update(xxTable)
這種情況下,因?yàn)間o的結(jié)構(gòu)初始值都是各自的0值,所以xorm無(wú)法識(shí)別要更新結(jié)構(gòu)體中的哪個(gè)col,如下方法寫可以正常解決。
xxTable := &models.XXTable{Visible: visible}
affected, err := eng.Where("id=?", id).Cols("visible").Update(xxTable)
補(bǔ)充:golang gin xorm注意事項(xiàng)
1. 無(wú)論是golang還是xorm中,在填寫j'son字段時(shí),注意空格,比如 `json:"abcd "` `json:"abcd"`是不一樣的,不仔細(xì)對(duì)比會(huì)出錯(cuò)
2.當(dāng)結(jié)合gin框中的
c.JSON(http.StatusOK,gin.H{})操作
并且使用xorm中的join,find操作時(shí)(https://www.kancloud.cn/xormplus/xorm/167102)要注意如下現(xiàn)象,
假如定義兩個(gè)結(jié)構(gòu)體對(duì)應(yīng)兩個(gè)表
然后使用聯(lián)合查詢,先把兩個(gè)結(jié)構(gòu)體結(jié)合成一個(gè)結(jié)構(gòu)體,假如如下,在UserGroup中使用User和Group匿名結(jié)構(gòu)體,
那么當(dāng)我們使用gin的c.JSON(http.StatusOK,gin.H{"data":UserGroup})返回?cái)?shù)據(jù)時(shí)會(huì)導(dǎo)致Group和User中同名字段顯示不了,這應(yīng)該是gin和xorm的不是很兼容造成的(沒(méi)有深究),要解決這個(gè)問(wèn)題,最好讓UserGroup中的User和Group不要以匿名結(jié)構(gòu)體的形式存在,可以改成
type UserGroup struct { MyUser User `xorm:"extends" json:"你要json中返回的名字"` MyGroup Group `xorm:"extends" json:"你要json中返回的名字"` }
以上為個(gè)人經(jīng)驗(yàn),希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教。
相關(guān)文章
golang如何使用gomobile進(jìn)行Android開(kāi)發(fā)
golang可以開(kāi)發(fā)android,使用golang開(kāi)發(fā)android需要下載安裝gomobile,下面這篇文章主要給大家介紹了關(guān)于golang如何使用gomobile進(jìn)行Android開(kāi)發(fā)的相關(guān)資料,需要的朋友可以參考下2023-01-01淺析Go中fasthttp與net/http的性能對(duì)比及應(yīng)用
這篇文章主要為大家詳細(xì)介紹了Golang中fasthttp的底層實(shí)現(xiàn)以及與net/http的區(qū)別,下面就跟隨小編一起來(lái)看看fasthttp到底是如何做到性能如此之快的吧2024-03-03go語(yǔ)言中嵌套結(jié)構(gòu)體的實(shí)現(xiàn)
在Go語(yǔ)言中,嵌套結(jié)構(gòu)體可定義為一個(gè)結(jié)構(gòu)體內(nèi)包含另一個(gè)結(jié)構(gòu)體,嵌套可以是值嵌套或指針嵌套,兩者在內(nèi)存分配和修改影響上有顯著區(qū)別,本文就來(lái)詳細(xì)的介紹一下,感興趣的可以了解一下2024-09-09Golang實(shí)現(xiàn)秒讀32GB大文件示例步驟
這篇文章主要為大家介紹了Golang實(shí)現(xiàn)秒讀32GB大文件的示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2023-12-12