解析:当我只有PFUser时,如何使用PFRelation进行查询?

时间:2013-06-26 22:29:59

标签: parse-platform pfrelation pfquery

这是我想要做的一个例子。我有当前用户作为PFUser和另一个名为Item的类我有一个名为“所有者”的关系,它是PFUser的关系。我想查询具有关系中当前用户的Item的所有实例。

我看到了相反查询方式的示例,但我没有看到如何获得关系,然后将其过滤到关系上的PFUser匹配。这是一个例子。

https://www.parse.com/questions/inverse-relationship-support

PFObject老师= ... //班级“教师”的PFObject PFRelation studentsRelation = [老师relationforKey:@“学生”]; PFQuery * query = studentsRelation.query; [query findObjectsInBackground:...

对于我的例子,我会这样做......

PFObject item = [PFObject objectWithClassName:@"Item"];
PFRelation relation = [parseObject relationforKey:@"owner"]; // Filter to PFUser? 
[query findObjectsInBackground:...

我可以使用whereKey,但我可以使用什么?我是否在objectId上匹配?

[query whereKey:@"objectId" equalTo:user.objectId];

我一直收到错误102:RelatedTo运算符需要一个有效的指针。我的猜测是,因为我从一个空对象开始,它没有起点。 Teacher的示例必须以填充的实例开头。我唯一拥有的是PFUser。必须有一种方法来查询Item实例并在它拥有给当前用户的“所有者”关系上对其进行过滤。我无法弄清楚,我还没有找到如何进行此查询的示例。

这个问题也在Parse.com上:https://parse.com/questions/how-do-i-query-using-pfrelation-when-i-just-have-pfuser

1 个答案:

答案 0 :(得分:9)

您可以在关系列上使用whereKey:equalTo:并将其传递给PFObject。然后,此查询将返回Teacher个关联中student的所有"students"个对象:

PFQuery *query = [PFQuery queryWithClassName:@"Teacher"]; [query whereKey:@"students" equalTo:student];

在此示例中,studentPFObject,其className与"students"中的关系相匹配。如果这是PFUser s的关系,并且您正在寻找当前用户的"Teacher",那么您将使用:

PFQuery *query = [PFQuery queryWithClassName:@"Teacher"]; [query whereKey:@"students" equalTo:[PFUser currentUser]];

此答案也发布在Parse的社区论坛上:https://parse.com/questions/how-do-i-query-using-pfrelation-when-i-just-have-pfuser