我有3个实体," Bar","服务员","产品"关系如下,A" Bar"与" Waiter"有一对多的关系。从服务员到产品也一样。
我需要知道哪些酒吧一直在为具有某些属性的产品提供服务。
Im获取的实体是Bars, 到目前为止,我已经尝试过:
[NSPredicate predicateWithFormat:@"SUBQUERY(toWaiter, $x, ANY $x.toProduct.dateServed > %@ AND $x.toProduct.dateConsumed > %@).@count > 0), [NSDate date], [NSDate date]];
我得到的地方
在子查询表达式集合中只允许一个toMany / manyToMany关系
如果我尝试:
[NSPredicate predicateWithFormat:@"SUBQUERY(toWaiter, $x, ANY $x.toProduct.dateServed > %@ ANY AND $x.toProduct.dateConsumed > %@).@count > 0), [NSDate date], [NSDate date]];
两个ANY,我得到同样的错误,
在子查询表达式集合中只允许一个toMany / manyToMany关系
哪个是子查询多个属性的正确方法?
感谢。
这是型号:
答案 0 :(得分:1)
您可以通过将两个SUBQUERY子句嵌套在一起来完成此操作:
NSPredicate *filter = [NSPredicate predicateWithFormat:@"SUBQUERY(toWaiter, $x, SUBQUERY($x.toProduct, $y, $y.dateServed > %@ AND $y.dateConsumed > %@).@count > 0).@count > 0", [NSDate date], [NSDate date]];
或者,(模糊地)自然语言:“获取所有Bars
的非零计数(Waiters
,其中Products
的非零计数{ {1}}和dateServed
比今天更大))“。