无法使用Beego的ORM .All()

时间:2013-09-27 15:09:54

标签: orm go

这是一段非常简单的代码,可以根据文档进行操作。

package controllers

import (
    "github.com/astaxie/beego"
    "github.com/astaxie/beego/orm"
    "fmt"
)

type TestController struct {
    beego.Controller
}

type Ticket struct {
    Id              int        `orm:"auto"`
    EventId         int
    EntryId         int
}

func (this *TestController) Get() {
    o := orm.NewOrm()
    tickets := new([]*Ticket)

    qs, _ := o.QueryTable(new(Ticket)).Filter("EventId", 2).All(&tickets)

    fmt.Print(qs)

    this.Ctx.WriteString("test controller")
}


func init(){
    orm.RegisterModel(new(Ticket))
}

这会导致Beego崩溃并出现以下错误:

GoEventKeeper:wrong object type `*[]*controllers.Ticket` for rows scan, need *[]*rohan.com/GoEventKeeper/controllers.Ticket or *rohan.com/GoEventKeeper/controllers.Ticket

我觉得这不应该发生,显然我在控制器中只有一个Ticket结构,所以它似乎是将错误的值与彼此进行比较?

我需要做些什么来解决这个问题?

1 个答案:

答案 0 :(得分:2)

qs, _ := o.QueryTable(new(Ticket)).Filter("EventId", 2).All(&tickets)

更改为

qs, _ := o.QueryTable(new(Ticket)).Filter("EventId", 2).All(tickets)

因为票已经是点

更多详情请参阅http://beego.me/docs/mvc/model/query.md#all