2014-09-29 8 views
0

Parse의 설명서에서 다 대다 관계의 역함을 수행하는 방법을 보여줍니다. 책과 저자의 예를 통해 그들이 저자를 알고 그들이 책을 찾고 싶어하는 곳. 제가 원했던 것은 둘 이상의 저자가 기여한 책을 찾는 것입니다.쿼리가 하나 이상의 개체와 일치하는 구문 분석에서 다 대다 쿼리 수행

https://www.parse.com/docs/relations_guide#manytomany-relations

는 내가 해봤하면 다음과 같은 코드입니다 : 코드는 일종의 작동

// suppose we have a author object, for which we want to get all books 
PFObject *authorA = ... 
PFObject *authorB = ... 

// first we will create a query on the Book object 
PFQuery *query = [PFQuery queryWithClassName:@"Book"]; 

// now we will query the authors relation to see if the author object 
// we have is contained therein 
[query whereKey:@"authors" equalTo:authorA]; 
[query whereKey:@"authors" equalTo:authorB]; 

.

하지만 authorA에는 책이 많지만 authorB에는 책이 하나 있는데 검색어에 하나의 책이있는 것 같습니다. authorA에 하나의 책이 있고 authorB에 책이 많이있는 경우 쿼리에 많은 책이 있습니다.

내가 원하는 것은 authorA와 authorB가 작성자 관계에있는 책을 찾는 방법입니다.

답변

0

당신은 코드 조각 아래에 사용할 수 있습니다 : -

PFQuery *authorA_Query = [PFQuery queryWithClassName:@"Book"]; 
[query whereKey:@"authors" equalTo:authorA]; 

// PFQuery *authorB_Query = [PFQuery queryWithClassName:@"Book"]; 
[query whereKey:@"authors" equalTo:authorB]; 

// PFQuery *query = [PFQuery orQueryWithSubqueries:@[authorA_Query,authorB_Query]]; 
[query findObjectsInBackgroundWithBlock:^(NSArray *results, NSError *error) { 
    // results contains book with both author A and B. 
    // and this is called compound querying. 
    // this way you could pass many queries to filter out your result. 
}]; 
+0

하지만 authorA OR authorB가 쓴 책을 찾지는 않습니까? 저자 A와 저자 B가 쓴 책을 원합니다. 내 코드에서 이것을 시도해보고 이것이 마법인지 확인해 보겠습니다 :) – AutomatonTec

+0

시도해 보았습니다. 나는 모든 저자를 authorA OR authorB로 얻었습니다. 아니 그리고 – AutomatonTec

+0

나는 변화를 만들었습니다 그래서 체크 아웃! 따라서 orQuery 메소드는 쿼리 오브젝트를 사용하고 다른 조건을 제공 할 필요가 없으며 원하는 AND로 작동합니다. 참조 용으로 [link] (http://stackoverflow.com/questions/21964373/multiple-query-search-with-parse-com)가 있습니다. – nikhil84

0

이 PFRelation를 사용하는 솔루션이없는 것처럼 정말 보인다 (희망 누군가가 나에게 잘못을 증명).

내가 한 것은 배열로 떨어진다.

https://www.parse.com/docs/relations_guide#onetomany-arrays

그래서 이런 걸는 내가 원하는 해결책이 아니다, 그러나

Author *authorA = ... 
Author *authorB = ... 
Book* book = ... 

// stick the objects in an array 
NSArray *authors = @[authorA, authorB]; 

// store the authors for the book 
[book setObject:weapons forKey:@"authors"]; 

// then you can query as usual 
PFQuery *bookQuery = [Book query]; 
[bookQuery whereKey:@"authors" equalTo:authorA]; 

// or query using an array of Author objects... 
[bookQuery whereKey:@"authors" containedIn:@[authorA, authorB]]; 
[bookQuery whereKey:@"authors" containsAllObjectsInArray:@[authorA, authorB]]; 

작동합니다. 저는 주어진 "책"에 대해 많은 "저자"를 가질 수있는 능력을 찾고있었습니다. 하지만 지금은 이것이 작동 할 것입니다 ...