Aqueduct ORM 多重嵌套连接

Aqueduct ORM multiple nested joins

我正在使用 Aqueudct ORM 和数据模型,如下所示:

    A
    |    (one-one)
    B
  / | \  (all many-one)
 C  C  C

我的表格如下所示:

class _A {
  B b;
}

class _B {
  @Relate(#c1Ref)
  C c1;
  @Relate(#c2Ref)
  C c2;
  @Relate(#c3Ref)
  C c3;
}

class _C {
  ManagedSet<B> c1Ref;
  ManagedSet<B> c2Ref;
  ManagedSet<B> c3Ref;
}

我想写一个查询来获取大胖子A,但是我想不出来

到目前为止,我有:

final query = Query<A>(context)
  ..join(object: (a) => a.b)
   //Note the non-cascading dot
  .join(object: (b) => b.c1);

这给了我 AB 但只有 c1。我如何编写查询以便同时获得 c2c3

加入方法returns一个新的查询对象。此查询是原始查询的子查询,并控制连接 table 上查询的参数。也就是说,您可以将 where 条件应用于适用于联接 table 的新查询对象。在您的情况下,您希望首先将新查询对象分配给一个变量,然后设置每个连接。我现在在用手机,所以结果可能不太好:

  final query = Query<A>(context);
  final bQuery = query.join(object: (a) => a.b)
       ..join(object: (b) => b.c1)
       ..join(object: ( b) => b.c2)
        ..join(object: (b) => b.c3);

请注意,您并没有真正将其放入变量中,但我这样做是为了说明这一点。您将在此处执行“query”,而不是“bQuery”。