我在Parse中有2个表,如下所示:
Users:
(PFUsers table with all Parse data)
belongsToGroups (A Parse Relation to Groups which is many to many)
Groups:
groupId
name
groupMembers (A Parse Relation to Users which is also many to many)
我有以下代码:
PFObject *groups = [PFObject objectWithClassName:@"Groups"];
groups[@"name"] = name;
syncUsers[@"isActive"] = [NSNumber numberWithInt:1];
//[groups saveInBackground];
PFUser *current = [PFUser currentUser];
PFRelation *relation = [syncUsers relationforKey:@"groupMembers"];
[relation addObject:current];
[groups saveEventually];
PFRelation *relation2 = [current relationforKey:@"belongsToGroups"];
[relation2 addObject:groups];
[current saveEventually];
首先,前2个代码块工作正常,但是如何更新用户中的关系以便我可以在Parse中查看关系并查看我的组?
二,我是否需要在用户和组中创建关系,以便它可以是多对多?
答案 0 :(得分:1)
您可以对关系whereKey:equalTo:
使用column
并将其传递给PFObject
。然后,此查询将返回所有具有此学生的“学生”关系的教师对象:
PFQuery *query = [PFQuery queryWithClassName:@"Teacher"];
[query whereKey:@"students" equalTo:student];
在此示例中,学生是PFObject
,className
与“学生”中的关系相匹配。如果这是relation
PFUsers
并且您正在寻找当前用户的“教师”,那么您将使用:
PFQuery *query = [PFQuery queryWithClassName:@"Teacher"];
[query whereKey:@"students" equalTo:[PFUser currentUser]];
答案 1 :(得分:1)
首先,对于您需要的关系,两个对象都存在于解析数据库中。然后,您必须使用PFRelation对象并使用关系保存对象。
我建议使用CodeCloud来建立关系,以便您可以与Android或Web Apps共享代码。
// Objects
PFObject *student = [PFObject objectWithoutDataWithClassName:@"Student" objectId:@"xauj37H"];
PFObject *teacher = [PFObject objectWithoutDataWithClassName:@"Teacher" objectId:@"xJdcj238"];
// Add a student to the teacher object
// Get the students relation
PFRelation *studentsForTeacher = [teacher relationForKey:@"students"];
// Add a student
[studentsForTeacher addObject:student];
// save the teacher, use InBackground instead
[teacher save];
// Now add a teacher for the student
PFRelation *teachersForStudent = [student relationForKey:@"teachers"];
[teachersForStudent addObject:teacher];
// Save the student
[student save];
// And now you can query the students of a teacher or the teachers of a student
// Students for a Teacher
PFQuery *studentsQuery = [studentsForTeacher query];
[studentsQuery find];
// Teachers for a Student
PFQuery *teachersQuery = [teachersForStudent query];
[teachersQuery find];