我正在设计一个数据库。根据文档,当关系数大于100并且有额外的字段时,我必须设计一个Join Table
。我设计了这个Join Table
有两个指针值。
_User
。后来我只需要currUser
行。objectId
,它是一个实体。我的问题是,如何编写查询以在queryfortable
。让我们说:
Table _User
Table Entity
Table Join ---> objectId Pointer1(_User) Pointer2(Event)
这看起来像这样:
这是我到目前为止所尝试的:
首先,我尝试在viewDidLoad
中从云中获取inviteUser数组,然后在queryForTable
中获取:
PFQuery *query = [PFQuery queryWithClassName:@"Event"];
[query whereKey:@"objectId" containedIn:_inviteList];
但我需要访问_inviteList.objectId这是不可能的!
我尝试使用innerQuerry或关系查询。但是当我刚开始学习解析时,我无法实现这一点。
PFUser *friendPointer = [PFUser currentUser];
PFQuery *query2 = [PFQuery queryWithClassName:@"Event"];
[query2 whereKey:friendPointer containedIn:_inviteList];
return query2;
这对我也不起作用。
PFQuery *innerQuery = [PFQuery queryWithClassName:@"Invite"];
[innerQuery whereKey:@"invitedUser" equalTo:[PFUser currentUser]];
query = [PFQuery queryWithClassName:@"Event"];
[query whereKey:@"user" matchesQuery:innerQuery];
return query;
我感谢任何人都可以帮我写这个查询或重新设计我的表格,以便能够访问这个查询。
答案 0 :(得分:3)
请试试此代码并给我评论
PFUser *user = [PFUser currentUser];
PFQuery *query = [PFQuery queryWithClassName:@"Invite"];
[query whereKey:@"invitedUser" equalTo:user];
[query includeKey:@"invitedUser"];
[query includeKey:@"eventId"];
[query orderByDescending:@"updatedAt"];
[query findObjectsInBackgroundWithBlock:^(NSArray *objects, NSError *error)
{
if (error == nil)
{
for (PFObject *underobject in [objects reverseObjectEnumerator])
{
PFUser *user1 = underobject[@"invitedUser"];
NSLog(@"invitedUser is :%@",user1);
}
}
}];