0

Parse のドキュメントでは、多対多の関係の逆を行う方法について説明していますが、参照するオブジェクトは 1 つだけです。著者を知っていて、本を見つけたいという本と著者の例から作業すること。私が欲しいのは、2 人以上の著者が貢献した本を見つけることです。

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 には 1 つの本がある場合、クエリで 1 つの本が見つかります。authorA に 1 冊の本があり、authorB に複数の本がある場合、多くの本がクエリで見つかります。

私が欲しいのは、著者関係に authorA と authorB の両方を持つ本を見つける方法です。

4

2 に答える 2

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.
 }];
于 2014-09-29T07:17:40.563 に答える