go - Unable to create Associations via golang orm library -


i've been trying use associations feature in golang orm (https://github.com/jinzhu/gorm/), , unable create pretty simple association. in example below, user table contains data, email table not. i've tried bunch of things , i'm missing basic, have been unable find right answer in github/stackoverflow.

code :

package main  import (     "database/sql"     "log"      "github.com/jinzhu/gorm"     "github.com/mattn/go-sqlite3" )  var db gorm.db  type user struct {     name   string     mail   email }  type email struct {     address string }  //initialize db . func initdb() {     var db_driver string     sql.register(db_driver, &sqlite3.sqlitedriver{})     log.printf("initializing database ", db_driver)     dbsql, _ := sql.open(db_driver, "simple-sqlite")      var err error     db, err = gorm.open("sqlite3", dbsql)      if err != nil {         log.fatalf("got error when connecting database, error '%v'", err)     }      db.logmode(true)     // invoke `*sql.db`'s functions     db.db().ping()     db.db().setmaxidleconns(10)     db.db().setmaxopenconns(100)      // disable table name's pluralization     db.singulartable(true) }  func initschema() {     db.createtable(&user{}, &email{}) }  func dostuff() {     user := user{name: "jinzhu", mail: email{address: "hello@hello.com"}}     db.create(&user) }  func main() {     initdb()     initschema()     dostuff() } 

go run main.go prints following output 2015/09/30 17:25:04 initializing database %!(extra string=)

[2015-09-30 17:25:04] [3.21ms] create table "user" ("name" varchar(255))

[2015-09-30 17:25:04] [4.01ms] create table "email" ("address" varchar(255) )

[2015-09-30 17:25:04] [0.54ms] insert "user" ("name") values ('jinzhu')

not sure i'm missing here - appreciate response!

you're missing primary/foreign key references each of models, here's updated code:

package main  import (     "database/sql"     "log"      "github.com/jinzhu/gorm"     "github.com/mattn/go-sqlite3" )  var db gorm.db  type user struct {     id     uint `gorm:"primary_key"`     name   string     mail   email     mailid sql.nullint64 }  type email struct {     id      uint `gorm:"primary_key"`     address string }  //initialize db . func initdb() {     var db_driver string     sql.register(db_driver, &sqlite3.sqlitedriver{})     log.printf("initializing database ", db_driver)     dbsql, _ := sql.open(db_driver, "simple-sqlite")      var err error     db, err = gorm.open("sqlite3", dbsql)      if err != nil {         log.fatalf("got error when connecting database, error '%v'", err)     }      db.logmode(true)     // invoke `*sql.db`'s functions     db.db().ping()     db.db().setmaxidleconns(10)     db.db().setmaxopenconns(100)      // disable table name's pluralization     db.singulartable(true) }  func initschema() {     db.createtable(&user{}, &email{}) }  func dostuff() {     user := user{name: "jinzhu", mail: email{address: "hello@hello.com"}}     db.create(&user) }  func main() {     initdb()     initschema()     dostuff() } 

notice primary keys on user , email structs foreign key reference on user


Comments

Popular posts from this blog

1111. appearing after print sequence - php -

java - WARN : org.springframework.web.servlet.PageNotFound - No mapping found for HTTP request with URI [/board/] in DispatcherServlet with name 'appServlet' -

Ruby on Rails, ActiveRecord, Postgres, UTF-8 and ASCII-8BIT encodings -