### 更新數據
更新數據使用`Update`方法,Update方法的第一個參數為需要更新的內容,可以為一個結構體指針或者一個Map[string]interface{}類型。當傳入的為結構體指針時,只有非空和0的field才會被作為更新的字段。當傳入的為Map類型時,key為數據庫Column的名字,value為要更新的內容。
~~~
user := new(User)
user.Name = "myname"
affected, err := engine.Id(id).Update(user)
~~~
這里需要注意,Update會自動從user結構體中提取非0和非nil得值作為需要更新的內容,因此,如果需要更新一個值為0,則此種方法將無法實現,因此有兩種選擇:
- 1.通過添加Cols函數指定需要更新結構體中的哪些值,未指定的將不更新,指定了的即使為0也會更新。
~~~
affected, err := engine.Id(id).Cols("age").Update(&user)
~~~
- 2.通過傳入map[string]interface{}來進行更新,但這時需要額外指定更新到哪個表,因為通過map是無法自動檢測更新哪個表的。
~~~
affected, err := engine.Table(new(User)).Id(id).Update(map[string]interface{}{"age":0})
~~~