需要一些解释来了解Grails是如何工作的
问题描述:
我是新来的Grails,有些东西对我来说依然模糊。需要一些解释来了解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
现在,我只是想知道...我怎么能访问这些群体获得追随者的数量,添加或删除一些?
感谢您的帮助。
答
基础上hasMany
和belongsTo
变量格姆自动为您创建了一些实例字段:
static hasMany = [users:UserMyTwitter];
这将创建一个内部GroupMyTwitter
Set类型的字段users
。 你可以访问此Set
像任何其他领域:
class GroupMyTwitter {
List users
static hasMany = [users:UserMyTwitter];
...
}
这将导致格姆使用List
为:
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
它可能是有用的users
集合而不是Set
。
一个List
有一个定义的顺序,并允许您通过索引来访问某些内容:
UserMyTwitter user = followers.users[4] // get the 5th user
+0
明白了,谢谢! – Rob
可以请你加'UserMyTwitter'的内容? – micha
是的,但我认为相关部分是我的UserMyTwitter域有这个属性:'static hasMany = [groupes:GroupCwitter];'。所以,如果我做'user.groupes.size()'我正确地得到2(追随者和追随者),但我怎样才能访问这些组? – Rob