gorm + go + pg:查询相关

时间:2017-08-01 18:01:07

标签: postgresql go go-gorm

所以我们有一个名字的人。名字和姓氏。 让我们插入具有名字和姓氏的人物并按姓名查询人物。再次。怎么样?

package main

import (
    "fmt"
    "log"

    "github.com/jinzhu/gorm"
)

var (
    pgHost     string
    pgUser     string
    pgDatabase string
    pgPass     string
)

type Person struct {
    gorm.Model
    Name   *Name
    NameID uint
}

type Name struct {
    gorm.Model
    PersonID uint
    First    string
    Last     string
}

func main() {
    // let's assume they're set
    db, e := gorm.Open("postgres", fmt.Sprintf("host=%s user=%s dbname=%s password=%s sslmode=disable", pgHost, pgUser, pgDatabase, pgPass))
    if e != nil {
        log.Fatal(e)
    }
    defer db.Close()

    db.AutoMigrate(&Person{}, &Name{})

    p := &Person{
        Name: &Name{First: "First", Last: "Last"},
    }

    tx := db.Begin()
    if c := tx.Create(p); c.Error != nil {
        log.Fatal("tx.create", c.Error)
    }
    tx.Commit()

    // let's find it

    pq := &Person{Name: &Name{First: "First"}}
    pr := new(Person)

    if c := db.Where(pq).First(pr); c.Error != nil {
        log.Fatal("db.Where", c.Error)
    }
}

错误消息

converting Exec argument $1 type: unsupported type Name, a struct

随意提出替代方案,改变结构等。 不,添加NameFirstNameLast字段是不可接受的。这2个结构应该保持不变。

1 个答案:

答案 0 :(得分:0)

删除指针,它将起作用

参考: http://jinzhu.me/gorm/associations.html