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  }