Как я могу использовать ГДЕ на ManagedSet? - PullRequest
0 голосов
/ 13 февраля 2019

У меня есть отношение «многие ко многим», имеющее P, PF и F. Я хочу отфильтровать P, используя от F до PF.Как:

final query = Query<P>(context)
      ..where( (p)=>p.pfSet.firstWhere( (pf)=>pf.f.cod == 1 ).f ).isNotNull();

и классы:

class P extends ManagedObject<_P> implements _P {}
class _P{
  @primaryKey
  int cod;
  ...

  ManagedSet<ProdutoFilial> pfSet;
}

class PF extends ManagedObject<_PF> implements _PF {}
class _PF{

  @primaryKey
  int cod;
  @(Relate #pfSet)
  P p;
  @(Relate #pfSet)
  F f;
  bool active;    
}

class F extends ManagedObject<_F> implements _F {}
class _F{

  @primaryKey
  int cod;
  ...
  ManagedSet<ProdutoFilial> pfSet;

}

Как я могу отфильтровать это?

1 Ответ

0 голосов
/ 15 февраля 2019

Может использовать собственный запрос, который останется на where:

..predicate = QueryPredicate(
          " exists (select f.cod from pf where pf.fcod = @fcod and pf.pcod = p.cod) ",
          { "fcod": 1 });

, если вы используете join в своем кодовом запросе, имя таблицы изменится.

...