使用parsingjoin两个表
我有一个数据库在parse.com
我有一个名为UserDetail
类
在那个类中,我有一个数组Field,称为occupationid
符( occupationid
对于这个专栏,我有另一个Occupation
称为Occupation
,其中列像occupationid
, occupationname
现在我想从UserDetail
获取所有数据以及来自occupation
类的所有数据,根据存储在UserDetail
的occupationid
UserDetail
UserDetail
用户名 – 职业 – 详情
Jhon – [“1”,“3”,“4”] – ajfdkaldjlajsdkfjaldkf
Occupation
职业 – 职业
1 – 会计师
2 – 律师
3 – 画家
4 – 作家
像智者一样。
我已经阅读了文档,关于我阅读的PFRelation
但没有得到如何应用在我的情况来获取这种types的数据。
我也试过
PFQuery *getuserdetail = [PFQuery queryWithClassName:@"UserDetail"]; [getuserdetail orderByAscending:@"celebid"]; PFQuery *getoccupation = [PFQuery queryWithClassName:@"Occupation"]; [getoccupation whereKey:@"occupationid" matchesKey:@"occupationid" inQuery:getuserdetail];
有什么build议么? 我必须为其他2,3列做同样的事情。 任何帮助将不胜感激。
UPDATE
数据直接在parse.com DataBrowser上添加,而不是从代码中添加。
我在UserDetail
类中创build了一个types为Relation
列,它要求我添加occupationid
和occupation
当我补充说我面临两个问题
1>当我尝试为不同的用户添加相同的职业ID时,它将为同一occupationid
创build两行。 这意味着两个用户有相同的职业,它正在创build两行occupationtable
例如。 objectid – 职业 – 职业adfk12 – 1 – 学校老师jdlkfg56 – 1 – 学校老师
2>当我试图从代码中获取它给我错误
PFQuery *getuserdetail = [PFQuery queryWithClassName:@"UserDetail"]; [getuserdetail orderByAscending:@"celebid"]; [getuserdetail includeKey:@"occupation"]; [getuserdetail whereKey:@"userid" equalTo:[NSString stringWithFormat:@"%d",intuserID]];
职业=“(<00000000>。(null) – >职业)”;
其中Occupation
是类名, occupation
是列名。 我试着用occupation
名称来编辑列名occupation
,如果它是模棱两可的。 但是这也不起作用。
我认为你正在变得有些不自在,因为你正在考虑使用“正常的”类似于SQL的数据库来parsing数据。 我之所以这样说,是因为从你写的东西看来,你的occupationid
是多余的(因为Parse会自动为所有的对象分配一个唯一的ID)。 您可以使用PFRelation
将职业与用户相关联,如下所示:
[someUser setObject:someOccupation forKey:@"occupation"]
这将在关键字occupation
下设置一个用户指针。
然而,正如你可能已经发现的(也许你为什么不确定如何正确应用PFRelation
)是默认情况下, Parse在查询时不会获取相关的对象。 你需要明确的告诉Parse来做到这一点。
为此,请使用includeKey:
方法。 因此,要查询用户并同时获得他们的职位(假设您已将职业设置为PFRelation
),您可以这样做:
PFQuery *query = [PFQuery queryWithClassName:@"UserDetail"]; [query includeKey:@"occupation"]; [query findObjectsInBackground... etc
我最好的build议是尽量不要考虑像MySQL或类似的parsing,因为它工作在一个相当不同的方式。 我发现Parse的文档是非常有用和清晰的,所以也许值得一看。