使用解析加入两个表

时间:2013-06-21 05:54:46

标签: ios objective-c parse-platform

我在parse.com上有一个数据库

我有一个名为UserDetail的课程

在该课程中,我有一个名为occupationid的数组字段

对于这个专栏,我有另一个名为Occupation的类,其中的列就像 occupationidoccupationname

现在,我想根据UserDetail

中存储的occupationoccupationid获取所有数据以及UserDetail类中的所有数据

UserDetail

用户名--contidid - 明细

Jhon - [“1”,“3”,“4”] - ajfdkaldjlajsdkfjaldkf


Occupation

占领 - 占领

1 - 会计师

2 - 律师

3 - 画家

4 - 作家

喜欢明智。

我已阅读了该文档,并且我已阅读PFRelation但我没有了解如何应用这种情况来获取此类数据。

我也试过

    PFQuery *getuserdetail = [PFQuery queryWithClassName:@"UserDetail"];

    [getuserdetail orderByAscending:@"celebid"];

    PFQuery *getoccupation = [PFQuery queryWithClassName:@"Occupation"];
    [getoccupation whereKey:@"occupationid" matchesKey:@"occupationid" inQuery:getuserdetail];

有什么建议吗?我必须为其他2,3列做同样的事情。 任何帮助将不胜感激。

更新

数据直接在parse.com DataBrowser上添加,而不是从代码中添加。

我在Relation类中创建了一个类型为UserDetail的列 这要求我添加occupationidoccupation

当我补充说我面临两个问题时

1>当我尝试为不同的用户添加相同的占领时,它会为同一个occupationid创建两行。这意味着对于具有相同职业的两个用户,它在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]];

occupationid =“(< 00000000>。(null) - >职业)”;

其中Occupation是类名 occupation是列名。 我尝试使用occupation编辑列名称occupationname,如果它变得含糊不清。但那也行不通。

1 个答案:

答案 0 :(得分:4)

我认为你有点不安,因为你正在考虑Parse的“普通”类似SQL的数据库。我之所以这么说,是因为根据您所写的内容,您的occupationid字段看起来是多余的(因为Parse会自动为所有对象分配唯一的ID)。您可以使用PFRelation将职业与用户相关联,如下所示:

[someUser setObject:someOccupation forKey:@"occupation"]

这将在someUser键下的occupation处设置指针。

但是,正如您可能已经发现的那样(可能为什么您不确定如何正确应用PFRelation)默认情况下 Parse在查询时不会获取相关对象。你需要明确告诉Parse这样做。

要执行此操作,请使用includeKey:方法。因此,要查询用户同时获得他们的职业(假设您将职业设置为PFRelation),您可以这样做:

PFQuery *query = [PFQuery queryWithClassName:@"UserDetail"];
[query includeKey:@"occupation"];
[query findObjectsInBackground... etc 

我最好的建议是尽量不要将Parse视为MySQL或类似的,因为它的工作方式却截然不同。我发现Parse的文档非常实用且清晰,所以也许值得一看。