2015-11-04 26 views
0

所以,我有2類:的Android解析查詢2類

Request class 
| objectId | user | data | status | 

User class 
| objectId | fullName | 
Request

'用戶' 密鑰是Relation<_User>類型,是一個指針,指向用戶類。
我想獲得所有的請求,其中statusnew,我也想獲得用戶的fullName

我想要得到的數據應該是這樣的。

| objectId | user | data | status | fullName | 

這是我基於Parse.com Android Guide

ParseQuery<ParseObject> query = ParseQuery.getQuery("Request"); 
query.include("user"); 
query.whereEqualTo("status", "new"); 

這已經嘗試將請求返回null,但是當我刪除include方法,它顯示的值,但沒有fullName

任何人都可以幫忙嗎?如果我的解釋不清楚或需要更多信息,請發表評論。謝謝:)

編輯
這就是我如何在請求中插入新行。

ParseObject post = new ParseObject("Request"); 
post.put("data", "data"); 
post.put("status", "new"); 
ParseUser user = ParseUser.getCurrentUser(); 
ParseRelation<ParseUser> relationRequest = post.getRelation("user"); 
relationRequest.add(user); 
+0

您沒有任何外鍵可以在兩個類中的數據之間建立鏈接。使用外鍵概念 –

+0

@ Kat-hat我想我已經正確添加了這個關係,請看看我編輯過的帖子。我也可以在瀏覽器中的Parse Data中點擊'View Relations'並查看用戶數據。 :) – Wilik

+0

您是否使用請求類「user」指向User類objectId?「user」是否包含字符串類型的objectId? –

回答

1

一種簡單方式是在Request類創建user1柱含有User類的objectId

爲了創建user1列中使用

ParseUser currentUser=ParseUser.getCurrentUser(); 
ParseObject post = new ParseObject("Request"); 
post.put("data", "data"); 
post.put("status", "new"); 
post.put("user1", currentUser); 
post.saveInBackground(); 

然後使用以下代碼來從User類取全名

ParseQuery<ParseObject> getQuery = ParseQuery.getQuery("Request"); 
     getQuery.include("user1"); 
     getQuery.findInBackground(new FindCallback<ParseObject>() { 
      public void done(List<ParseObject> scoreList, ParseException e) { 
       if (e == null) { 
        if (scoreList != null && scoreList.size() > 0) { 
         ParseObject putData = scoreList.get(0); 
         String user1=putData.getParseObject("user1").getString("fullName"); 
         String user2=putData.getString("user2"); 
         Log.e("USer 1", ""+user1); 
         Log.e("USer 2", ""+user2); 
        } 
       } 

      } 
     }); 

這是爲我工作。也可以幫助你。