Create Record
user := User{Name: "Jinzhu", Age: 18, Birthday: time.Now()}
db.NewRecord(user)
db.Create(&user)
db.NewRecord(user)
|
Default Values
以下のように、タグを利用してデフォルト値を設定できます。
type Animal struct { ID int64 Name string `gorm:"default:'galeone'"` Age int64 }
|
値のないフィールドやゼロ値のフィールドは、insertのSQL実行時には除外して実行されます。 gormは、これらのフィールドをデータベースへレコードの挿入後に読み込みます。
var animal = Animal{Age: 99, Name: ""} db.Create(&animal)
|
NOTE 0
, ''
, false
その他の ゼロ値は、 データベースに保存されず、代わりにデフォルト値が設定されます。 これを回避したい場合には、以下のようにポインタかscanner/valuer
を利用してください。
type User struct { gorm.Model Name string Age *int `gorm:"default:18"` }
type User struct { gorm.Model Name string Age sql.NullInt64 `gorm:"default:18"` }
|
Setting Field Values In Hooks
BeforeCreate
フックでフィールドの値を更新したい場合、scope.SetColumn
が利用できます。
func (user *User) BeforeCreate(scope *gorm.Scope) error { scope.SetColumn("ID", uuid.New()) return nil }
|
Extra Creating option
db.Set("gorm:insert_option", "ON CONFLICT").Create(&product)
|