2

我正在将 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. 我如何编写一个查询,以便我得到c2以及c3

4

1 回答 1

2

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

  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);

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

于 2019-09-01T20:21:22.930 回答