大概是这样的需求,创建玩家角色name是唯一的。
type Player struct {
ID uint gorm:"primary_key;AUTO_INCREMENT"
Name string sql:"not null;unique"
...
}
var player Player
player = Player{Name: "TestName"}/// 这里是不是有问题了,id好像默认赋值成0了
玩家提供name,然后我调用db.Create(player).
我怎么知道是不是name重复了没创建成功,还是已经创建好了,如果成功了,我要获取我创建出来的player的id或者那个player所有信息也行。
You probably want this?
type Player struct {
ID uint `gorm:"primary_key"`
Name string `gorm:"not null;unique"`
}
err := DB.Create(&Player{
Name: "Byakuya Kuchiki",
}).Error
if nil != err {
panic(err)
}
var player Player
err = DB.Limit(1).Find(&player).Error
if nil != err {
panic(err)
}
使用*DB.Save()方法
Thx,Allendar.
That' cool.It works now.
db.Create(&player)
player可以取 ID 的
db.Create(&player) 后可以直接返回 player.ID
type User struct {
id int32
gorm:"PRIMARY_KEY;AUTO_INCREMENT"
name string
}
result := Db.Create(&user)
id := user.id
type User struct {
Id int32
Name string
}
use field upper case, cause reflect can read upper case field only
It works for me.
func AddOrder(tx *gorm.DB, order Order) (uint, int64) {
flag := tx.Create(&order).RowsAffected
orderId := order.OrderId
return orderId, flag
}
If primary key is not id
, should add comment, like this gorm:"column:order_id;primary_key"
OR
value := tx.Create(&order).RowsAffected.Value
db.Create(&player) 后可以直接返回 player.ID
如果ID是自增的,怎么办?
db.Create(&player) 后可以直接返回 player.ID
如果ID是自增的,怎么办?
你不用填 player.Id, 插入数据库, 数据库会自动进行自增长, 最后写入到 player.Id
db.Create(&player) 后可以直接返回 player.ID
如果ID是自增的,怎么办?
你不用填 player.Id, 插入数据库, 数据库会自动进行自增长, 最后写入到 player.Id
只返回创建数据的ID吗?一般来说创建或者更新之后需要那一条创建或者更新的数据返回使用。
怎么返回整条数据还是说有整条数据返回?
@jonSnow47
db.Create(&player) 后可以直接返回 player.ID
如果ID是自增的,怎么办?
你不用填 player.Id, 插入数据库, 数据库会自动进行自增长, 最后写入到 player.Id
只返回创建数据的ID吗?一般来说创建或者更新之后需要那一条创建或者更新的数据返回使用。
怎么返回整条数据还是说有整条数据返回?
@JonSnow47
这里不会将这个条目所有的数据返回到结构体里, 例如 player表中 age default 18, 然后 db.Create(&player), player.Id 会被赋值, 但是 player.Age 等参数是不会被赋值的, 除非重新查询
@JonSnow47 如果你在定义的时候表明这个有default值的话,GORM 会自动查询 age 的
It works for me.
func AddOrder(tx *gorm.DB, order Order) (uint, int64) { flag := tx.Create(&order).RowsAffected orderId := order.OrderId return orderId, flag }
If primary key is not
id
, should add comment, like thisgorm:"column:order_id;primary_key"
OR
value := tx.Create(&order).RowsAffected.Value
Hello @DonaldY , I try to use RowsAffected.Value
but it says Value
is undefined, since RowsAffected
is an int
value. How did you get Value
as you shown in your reply?
Most helpful comment
db.Create(&player)
player可以取 ID 的