mirror of
https://github.com/astaxie/beego.git
synced 2024-11-22 15:10:55 +00:00
orm now use a filed named Id
as default auto primary key, you can ignore orm:"auto"
setting
This commit is contained in:
parent
f02b286ad4
commit
c81bbf9801
@ -32,8 +32,26 @@ func registerModel(model interface{}) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
if info.fields.pk == nil {
|
if info.fields.pk == nil {
|
||||||
fmt.Printf("<orm.RegisterModel> `%s` need a primary key field\n", name)
|
outFor:
|
||||||
os.Exit(2)
|
for _, fi := range info.fields.fieldsDB {
|
||||||
|
if fi.name == "Id" {
|
||||||
|
if fi.sf.Tag.Get(defaultStructTagName) == "" {
|
||||||
|
switch fi.addrValue.Elem().Kind() {
|
||||||
|
case reflect.Int, reflect.Int64, reflect.Int32:
|
||||||
|
fi.auto = true
|
||||||
|
fi.pk = true
|
||||||
|
info.fields.pk = fi
|
||||||
|
break outFor
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if info.fields.pk == nil {
|
||||||
|
fmt.Printf("<orm.RegisterModel> `%s` need a primary key field\n", name)
|
||||||
|
os.Exit(2)
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
info.table = table
|
info.table = table
|
||||||
|
@ -89,7 +89,7 @@ type fieldInfo struct {
|
|||||||
fullName string
|
fullName string
|
||||||
column string
|
column string
|
||||||
addrValue reflect.Value
|
addrValue reflect.Value
|
||||||
sf *reflect.StructField
|
sf reflect.StructField
|
||||||
auto bool
|
auto bool
|
||||||
pk bool
|
pk bool
|
||||||
null bool
|
null bool
|
||||||
@ -244,7 +244,7 @@ checkType:
|
|||||||
fi.name = sf.Name
|
fi.name = sf.Name
|
||||||
fi.column = getColumnName(fieldType, addrField, sf, tags["column"])
|
fi.column = getColumnName(fieldType, addrField, sf, tags["column"])
|
||||||
fi.addrValue = addrField
|
fi.addrValue = addrField
|
||||||
fi.sf = &sf
|
fi.sf = sf
|
||||||
fi.fullName = mi.fullName + "." + sf.Name
|
fi.fullName = mi.fullName + "." + sf.Name
|
||||||
|
|
||||||
fi.null = attrs["null"]
|
fi.null = attrs["null"]
|
||||||
@ -358,6 +358,14 @@ checkType:
|
|||||||
|
|
||||||
if fi.auto || fi.pk {
|
if fi.auto || fi.pk {
|
||||||
if fi.auto {
|
if fi.auto {
|
||||||
|
|
||||||
|
switch addrField.Elem().Kind() {
|
||||||
|
case reflect.Int, reflect.Int32, reflect.Int64:
|
||||||
|
default:
|
||||||
|
err = fmt.Errorf("auto primary key only support int, int32, int64, but found `%s`", addrField.Elem().Kind())
|
||||||
|
goto end
|
||||||
|
}
|
||||||
|
|
||||||
fi.pk = true
|
fi.pk = true
|
||||||
}
|
}
|
||||||
fi.null = false
|
fi.null = false
|
||||||
|
@ -13,10 +13,10 @@ import (
|
|||||||
)
|
)
|
||||||
|
|
||||||
type Data struct {
|
type Data struct {
|
||||||
Id int `orm:"auto"`
|
Id int
|
||||||
Boolean bool
|
Boolean bool
|
||||||
Char string `orm:"size(50)"`
|
Char string `orm:size(50)`
|
||||||
Text string
|
Text string `orm:"type(text)"`
|
||||||
Date time.Time `orm:"type(date)"`
|
Date time.Time `orm:"type(date)"`
|
||||||
DateTime time.Time
|
DateTime time.Time
|
||||||
Byte byte
|
Byte byte
|
||||||
@ -37,10 +37,10 @@ type Data struct {
|
|||||||
}
|
}
|
||||||
|
|
||||||
type DataNull struct {
|
type DataNull struct {
|
||||||
Id int `orm:"auto"`
|
Id int
|
||||||
Boolean bool `orm:"null"`
|
Boolean bool `orm:"null"`
|
||||||
Char string `orm:"size(50);null"`
|
Char string `orm:"size(50);null"`
|
||||||
Text string `orm:"null"`
|
Text string `orm:"type(text);null"`
|
||||||
Date time.Time `orm:"type(date);null"`
|
Date time.Time `orm:"type(date);null"`
|
||||||
DateTime time.Time `orm:"null"`
|
DateTime time.Time `orm:"null"`
|
||||||
Byte byte `orm:"null"`
|
Byte byte `orm:"null"`
|
||||||
@ -61,7 +61,7 @@ type DataNull struct {
|
|||||||
}
|
}
|
||||||
|
|
||||||
type User struct {
|
type User struct {
|
||||||
Id int `orm:"auto"`
|
Id int
|
||||||
UserName string `orm:"size(30);unique"`
|
UserName string `orm:"size(30);unique"`
|
||||||
Email string `orm:"size(100)"`
|
Email string `orm:"size(100)"`
|
||||||
Password string `orm:"size(100)"`
|
Password string `orm:"size(100)"`
|
||||||
@ -81,10 +81,10 @@ func NewUser() *User {
|
|||||||
}
|
}
|
||||||
|
|
||||||
type Profile struct {
|
type Profile struct {
|
||||||
Id int `orm:"auto"`
|
Id int
|
||||||
Age int16 ``
|
Age int16
|
||||||
Money float64 ``
|
Money float64
|
||||||
User *User `orm:"reverse(one)" json:"-"`
|
User *User `orm:"reverse(one)" json:"-"`
|
||||||
}
|
}
|
||||||
|
|
||||||
func (u *Profile) TableName() string {
|
func (u *Profile) TableName() string {
|
||||||
@ -97,8 +97,8 @@ func NewProfile() *Profile {
|
|||||||
}
|
}
|
||||||
|
|
||||||
type Post struct {
|
type Post struct {
|
||||||
Id int `orm:"auto"`
|
Id int
|
||||||
User *User `orm:"rel(fk)"` //
|
User *User `orm:"rel(fk)"`
|
||||||
Title string `orm:"size(60)"`
|
Title string `orm:"size(60)"`
|
||||||
Content string ``
|
Content string ``
|
||||||
Created time.Time `orm:"auto_now_add"`
|
Created time.Time `orm:"auto_now_add"`
|
||||||
@ -112,7 +112,7 @@ func NewPost() *Post {
|
|||||||
}
|
}
|
||||||
|
|
||||||
type Tag struct {
|
type Tag struct {
|
||||||
Id int `orm:"auto"`
|
Id int
|
||||||
Name string `orm:"size(30)"`
|
Name string `orm:"size(30)"`
|
||||||
Posts []*Post `orm:"reverse(many)" json:"-"`
|
Posts []*Post `orm:"reverse(many)" json:"-"`
|
||||||
}
|
}
|
||||||
@ -123,7 +123,7 @@ func NewTag() *Tag {
|
|||||||
}
|
}
|
||||||
|
|
||||||
type Comment struct {
|
type Comment struct {
|
||||||
Id int `orm:"auto"`
|
Id int
|
||||||
Post *Post `orm:"rel(fk)"`
|
Post *Post `orm:"rel(fk)"`
|
||||||
Content string ``
|
Content string ``
|
||||||
Parent *Comment `orm:"null;rel(fk)"`
|
Parent *Comment `orm:"null;rel(fk)"`
|
||||||
|
Loading…
Reference in New Issue
Block a user