我有以下两个类
Game
objectId
player1
player2
Round
objectId
game (pointer to Game.objectId)
每个游戏都可以有很多回合,这就是为什么我使用了一个poitner(所有的解析文档似乎都指出了一对多的指针或多对多的指示)
目前我在Round类上成功运行查询,并且我正在使用include选项在循环结果中提取游戏数据。这一切都很棒,而且效果很好。
然而,我现在已经意识到游戏可能存在而没有任何轮次(最初至少)。因此,我试图从Game类的角度重新查询我的查询,但无论我尝试什么,我都无法“包含”与游戏相关的轮次。
我想也许我应该在Game类中有一个'rounds'指针列指向'Round'中的gameObjectId列,但它不会让我添加它和错误。我认为这是因为指针需要指向您指向的类的objectId - 这对我来说不会像Round objectId那样。
有人知道这是否可行?也许我需要一个考虑,但这不是一个很多很多的关系。我已经阅读了关于人际关系等的解析文档,但我仍然不清楚。
我来自一个sql背景,这就是为什么我似乎无法掌握这个问题 - 它应该是直截了当的,但我明显错过了一些东西。
希望有人可以就如何实现这一目标提出建议。如果需要,我很乐意调整我的架构。
提前致谢
答案 0 :(得分:0)
使用指针获取关系两侧的所有对象需要两个API请求:
PFQuery *gameQuery = [PFQuery queryWithClassName:@"Game"];
[gameQuery getObjectInBackgroundWithId:@"some_id" block:^(PFObject *game, NSError *error) {
PFQuery *roundQuery = [PFQuery queryWithClassName:@"Round"];
[roundQuery whereKey:@"game" equalTo:game];
[roundQuery findObjectsInBackgroundWithBlock:^(NSArray *rounds, NSError *error) {
}];
}];
而不是指针,你可能想要使用一个数组(假设一个游戏不会超过100轮,否则它不会有效):
Game
objectId
player1
player2
rounds (round array)
Round
objectId
然后你可以再次使用include
(就像你用指针做的那样)并获得游戏:
PFQuery *gameQuery = [PFQuery queryWithClassName:@"Game"];
[gameQuery includeKey:@"rounds"];
[gameQuery getObjectInBackgroundWithId:@"some_id" block:^(PFObject *game, NSError *error) {
}];