我是Grails的新手,有些事情对我来说仍然含糊不清。
我想创建一个类似Twitter的应用程序。由于用户同时拥有关注者和以下群组,因此我创建了GroupMyTwitter
域名。
我不明白,这背后的逻辑是什么。我的GroupMyTwitter
域名是这样的:
class GroupMyTwitter
{
String name;
static constraints = { name blank : false; }
static hasMany = [users:UserMyTwitter];
static belongsTo = [owner:UserMyTwitter];
}
然后,每次创建用户时,我还会创建两个与他关联的组:
GroupMyTwitter followers = new GroupMyTwitter (
name:"followers",
owner: user).save(flush: true, failOnError: true)
// And same for followings
现在我只是想知道......我如何访问这些群组以获取关注者/数量,添加或删除一些?
感谢您的帮助。
答案 0 :(得分:3)
根据hasMany
和belongsTo
变量,gorm会自动为您创建一些实例字段:
static hasMany = [users:UserMyTwitter];
这将在users
内创建Set类型的字段GroupMyTwitter
。
您可以像访问任何其他字段一样访问此Set
:
followers.users.add(userA) // add a user
followers.users.remove(userB) // remove a user
followers.users.size() // number of users
// don't forget to save the group after you modfied the `users` collection:
followers.save(failOnError: true)
根据您的需要,使用List代替Set
可能会有用:
class GroupMyTwitter {
List users
static hasMany = [users:UserMyTwitter];
...
}
这会导致Gorm对List
集合使用users
而不是Set
。
List
有一个已定义的顺序,允许您按索引访问某些元素:
UserMyTwitter user = followers.users[4] // get the 5th user