我有A-> AB <-B 2个ManagedObjects(A和B)之间的多对多关系,其中AB是联结表。
从数据库查询A时,如何将B值连接到AB关节对象?
run-android
它给了我一个包含AB关节对象的A对象的列表,但是AB对象不包括完整的B对象,而仅包括b.id(不包括B类的其他字段)。
欢呼
答案 0 :(得分:1)
调用join
时,将创建一个新的Query<T>
并从该方法返回,其中T
是联接类型。因此,如果a.ab
的类型为AB
,则Query<A>.join
返回Query<AB>
(它在内部链接到原始查询)。
由于有了新的Query<AB>
,因此可以像配置其他查询一样配置它,包括启动另一个联接,添加排序描述符和where子句。
有一些风格上的语法选择。您可以将此查询压缩为单行代码:
final query = Query<A>(context)
..join(set: (a) => a.ab).join(object: (ab) => ab.b);
final results = await query.fetch();
如果查询保持原样,这是可以的,但是当您向查询中添加更多条件时,点运算符和级联运算符之间的差异将变得更加难以跟踪。我经常将联接查询放入其自己的变量中。 (请注意,您不会在联接查询上调用任何执行方法):
final query = Query<A>(context);
final join = query.join(set: (a) => a.ab)
..join(object: (ab) => ab.b);
final results = await query.fetch();