1
0
mirror of https://github.com/astaxie/beego.git synced 2024-11-25 23:01:28 +00:00

orm fix 1. support Limit when use QuerySeter.One 2. return Local time

This commit is contained in:
slene 2013-09-06 19:03:47 +08:00
parent 6064a7ab2a
commit 22d2de9fc7

View File

@ -497,15 +497,15 @@ func (d *dbBase) ReadBatch(q dbQuerier, qs *querySet, mi *modelInfo, cond *Condi
} }
if errTyp { if errTyp {
panic(fmt.Sprintf("wrong object type `%s` for rows scan, need *[]*%s or *%s", ind.Type(), mi.fullName, mi.fullName)) if one {
panic(fmt.Sprintf("wrong object type `%s` for rows scan, need *%s", val.Type(), mi.fullName))
} else {
panic(fmt.Sprintf("wrong object type `%s` for rows scan, need *[]*%s or *[]%s", val.Type(), mi.fullName, mi.fullName))
}
} }
rlimit := qs.limit rlimit := qs.limit
offset := qs.offset offset := qs.offset
if one {
rlimit = 0
offset = 0
}
Q := d.ins.TableQuote() Q := d.ins.TableQuote()
@ -704,7 +704,7 @@ func (d *dbBase) setColsValues(mi *modelInfo, ind *reflect.Value, cols []string,
panic(fmt.Sprintf("Raw value: `%v` %s", val, err.Error())) panic(fmt.Sprintf("Raw value: `%v` %s", val, err.Error()))
} }
_, err = d.setFieldValue(fi, value, &field) _, err = d.setFieldValue(fi, value, field)
if err != nil { if err != nil {
panic(fmt.Sprintf("Raw value: `%v` %s", val, err.Error())) panic(fmt.Sprintf("Raw value: `%v` %s", val, err.Error()))
@ -786,6 +786,7 @@ setValue:
s = s[:19] s = s[:19]
} }
t, err = time.ParseInLocation(format_DateTime, s, tz) t, err = time.ParseInLocation(format_DateTime, s, tz)
t = t.In(DefaultTimeLoc)
} }
if err != nil && s != "0000-00-00" && s != "0000-00-00 00:00:00" { if err != nil && s != "0000-00-00" && s != "0000-00-00 00:00:00" {
tErr = err tErr = err
@ -864,7 +865,7 @@ end:
} }
func (d *dbBase) setFieldValue(fi *fieldInfo, value interface{}, field *reflect.Value) (interface{}, error) { func (d *dbBase) setFieldValue(fi *fieldInfo, value interface{}, field reflect.Value) (interface{}, error) {
fieldType := fi.fieldType fieldType := fi.fieldType
isNative := fi.isFielder == false isNative := fi.isFielder == false
@ -921,7 +922,7 @@ setValue:
mf := reflect.New(fi.relModelInfo.addrField.Elem().Type()) mf := reflect.New(fi.relModelInfo.addrField.Elem().Type())
field.Set(mf) field.Set(mf)
f := mf.Elem().Field(fi.relModelInfo.fields.pk.fieldIndex) f := mf.Elem().Field(fi.relModelInfo.fields.pk.fieldIndex)
field = &f field = f
goto setValue goto setValue
} }
} }