解析 - 按成分搜索配方

时间:2014-07-08 13:16:24

标签: parse-platform

我的解析中有以下两个类,在查询我想要的结果时遇到了一些麻烦。我正在尝试按成分搜索食谱。

以下是我的课程:成分

+---------------+---------+
| ingredientId  | name    |
+---------------+---------+
|             1 | tomato  |
|             2 | garlic  |
|             3 | banana  |
|             4 | chicken |
|             5 | beef    |
|             6 | onion   |
|             7 | salt    |
+---------------+---------+

食谱

+-----------+------------------+----------------------+
| recipeId  | name             | Ingredients (array)  |
+-----------+------------------+----------------------+
|         1 | hamburger        | {5,7,2}              |
|         2 | salad            | {1,2,6}              |
|         3 | garlic chicken   | {2,4}                |
+-----------+------------------+----------------------+

我正在尝试查询以查找我可以使用给定成分制作的食谱。

示例:成分(1,2,4)将与大蒜鸡配方一起响应,因为我拥有此配方中的所有成分。

任何帮助将不胜感激!

2 个答案:

答案 0 :(得分:0)

您在这里使用Array代替Relation的具体原因是什么?我相信Relations会解开你的手......

我建议将Recipes.Ingredients转换为Relation数据类型,并将成分分配为单一关系。

然后查询会更容易(你没有指定语言,所以我在这里坚持使用objective-c):

// for demonstration purposes these are the ingredients I have and am looking for 
// suitable recipe
NSArray *_arrIngredients = @[@"water", @"butter", @"meat", @"bread", @"salt"];

// get objectId for all ingredients I'm searching for
PFQuery *_query = [PFQuery queryWithClassName:@"Ingredients"];
[_query whereKey:@"name" containedIn:_arrIngredients];

// query existing relations
PFQuery *mainQuery = [PFQuery queryWithClassName:@"Recipes"];
[mainQuery whereKey:@"Ingredients" matchesQuery:_query];
[mainQuery findObjectsInBackgroundWithBlock:^(NSArray *objects, NSError *error) {

    if(error)
    {
        NSLog(@"%@", [error localizedDescription]);
    }
    else
    {
        // print out matching objects
        // your code here
        for(PFObject *object in objects)
        {
            NSLog(@"%@: %@", [object objectForKey:@"name"], [object objectId]);
        }
    }
}];

希望它有所帮助!

答案 1 :(得分:0)

进行查询以将第一个表的所有数据保存在两个数组中..一个用于成分名称,另一个用于成分id。

然后再次移动到第二个表应用查询为特定的recipe获取数组并将它们保存在List(在android中)然后....

当任何成分被输入搜索任何食谱时......您必须检查成分(您从第一张表中制作)中的成分..然后将特定成分ID传递给列表(来自第二张表) )获得收据名称..

如果您使用android os进行编码,那么请使用实体。或者让我知道我会为此添加代码。