admin
admin copied to clipboard
有个函数看不懂 求解
usermodel里面的 Filter() 里面两个参数 “Role_Role_id” 和roleid 为什么可以这样写
func GetUserByRoleId(roleid int64) (users []orm.Params, count int64) {
o := orm.NewOrm()
user := new(User)
count, _ = o.QueryTable(user).Filter("Role__Role__Id", roleid).Values(&users)
return users, count
}
"Role_Role_Id" 这个字符串对应的是什么意思
Filter(string, ...interface{}) QuerySeter
// add NOT condition to querySeter.
// have the same usage as Filter
在reserve(many)或者m2m关系中,因为不是one2one rel(fk)对应关系,所以要指定 fieldname+tablename+tablefiled,
Role__Role__Id 第一个Role表示User对象中的Role []*Role, 第二个Role表示Role对象了,Id就表示Role对象中的Id字段了
例如官方的样例中:
Post 和 Tag 是 ManyToMany 关系
设置 rel(m2m) 以后,ORM会自动创建中间表
type Post struct {
Id int
Title string
User _User orm:"rel(fk)"
Tags []_Tag orm:"rel(m2m)"
}
type Tag struct {
Id int
Name string
Posts []*Post orm:"reverse(many)"
}
通过 tag name 查询哪些 post 使用了这个 tag
var posts []*Post num, err := dORM.QueryTable("post").Filter("Tags__Tag__Name", "golang").All(&posts) 通过 post title 查询这个 post 有哪些 tag
var tags []*Tag num, err := dORM.QueryTable("tag").Filter("Posts__Post__Title", "Introduce Beego ORM").All(&tags)