我的解析中有以下两个类,在查询我想要的结果时遇到了一些麻烦。我正在尝试按成分搜索食谱。
以下是我的课程:成分
+---------------+---------+
| 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)将与大蒜鸡配方一起响应,因为我拥有此配方中的所有成分。
任何帮助将不胜感激!
答案 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进行编码,那么请使用实体。或者让我知道我会为此添加代码。