github.com/insionng/yougam@v0.0.0-20170714101924-2bc18d833463/libraries/go-xorm/xorm/examples/derive.go (about) 1 package main 2 3 import ( 4 "fmt" 5 "os" 6 7 "github.com/insionng/yougam/libraries/xorm" 8 _ "github.com/mattn/go-sqlite3" 9 ) 10 11 type User struct { 12 Id int64 13 Name string 14 } 15 16 type LoginInfo struct { 17 Id int64 18 IP string 19 UserId int64 20 } 21 22 type LoginInfo1 struct { 23 LoginInfo `xorm:"extends"` 24 UserName string 25 } 26 27 func main() { 28 f := "derive.db" 29 os.Remove(f) 30 31 Orm, err := xorm.NewEngine("sqlite3", f) 32 if err != nil { 33 fmt.Println(err) 34 return 35 } 36 defer Orm.Close() 37 Orm.ShowSQL(true) 38 err = Orm.CreateTables(&User{}, &LoginInfo{}) 39 if err != nil { 40 fmt.Println(err) 41 return 42 } 43 44 _, err = Orm.Insert(&User{1, "xlw"}, &LoginInfo{1, "127.0.0.1", 1}) 45 if err != nil { 46 fmt.Println(err) 47 return 48 } 49 50 info := LoginInfo{} 51 _, err = Orm.Id(1).Get(&info) 52 if err != nil { 53 fmt.Println(err) 54 return 55 } 56 fmt.Println(info) 57 58 infos := make([]LoginInfo1, 0) 59 err = Orm.Sql(`select *, (select name from user where id = login_info.user_id) as user_name from 60 login_info limit 10`).Find(&infos) 61 if err != nil { 62 fmt.Println(err) 63 return 64 } 65 66 fmt.Println(infos) 67 }