Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/dart/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Flutter Objectbox dart:如何基于ToOne关系进行过滤?_Flutter_Dart_Objectbox - Fatal编程技术网

Flutter Objectbox dart:如何基于ToOne关系进行过滤?

Flutter Objectbox dart:如何基于ToOne关系进行过滤?,flutter,dart,objectbox,Flutter,Dart,Objectbox,假设我有 @Entity() class Order { int id; final item = ToOne<Item>(); final customer = ToOne<Customer>(); } @Entity() class Item { int id; int price; @Backlink() final orders = ToMany<Order>(); } @Entity() 阶级秩序{ int-id;

假设我有

@Entity()
class Order {
  int id;
  final item = ToOne<Item>();
  final customer = ToOne<Customer>();
}

@Entity()
class Item {
  int id;
  int price;
  @Backlink()
  final orders = ToMany<Order>();
}

@Entity()
阶级秩序{
int-id;
最后一项=ToOne();
最终客户=ToOne();
}
@实体()
类项目{
int-id;
国际价格;
@反向链接()
最终订单=ToMany();
}
如何根据物料价格查询过滤订单。我知道我可以查询项目并获得反向链接订单,但有可能采用其他方式吗?例如:

final orders = store.box<Order>().query(Order_.item.price < 100).build(). 
final orders=store.box()。

供应商表示,即使在关系中也会过滤数据,但我找不到方法。若要按型号的商品价格查询订单,您可以使用以下方法:

final ordersQuery=store.box().query()
..链接(订单项目,项目价格<100)
…构建();
它的作用是:

  • 首先创建一个不带任何条件的
    QueryBuilder
    (没有用于
    query()
    的参数)
  • 然后创建一个到
    项的链接
    (如果我们想深度链接另一个实体,则会创建另一个查询生成器,在本例中我们不会这样做)
  • 然后在“根”上调用
    QueryBuilder
    ,创建
    Query
上述代码相当于:

final ordersQueryBuilder=store.box().query();
ordersQueryBuilder.link(订单项目,项目价格<100);
final ordersQuery=ordersQueryBuilder.build();
然后,对于任一版本的代码,您都可以像往常一样使用查询:

final orders=ordersQuery.find();
//和往常一样,不要忘记关闭查询以释放资源
//我不再需要它了。如果您错过了它,查询是可重用的,因此您可以调用
//根据需要在ordersQuery上使用尽可能多的函数(在关闭()之前,它将一直工作)。
ordersQuery.close();

谢谢。成功了。你会如何做它的深层链接?就像按项目类别进一步筛选一样?我只做了以下操作:ordersQueryBuilder.link(Order\u0.item,item\u0.price<100)。link(item\u0.category,category\u0.id.equals(id));>这是一个多么棒的库啊,这正是深度链接的方式:)我还建议您查看测试代码,以了解使用该库的其他方式(Dart的文档仍然有点稀少):需要明确的是,在深度链接示例中,您实际上不必链接,因为您有ID-这是相同的:
ordersQueryBuilder.link(订单项目、项目类别等于(id)和(项目价格<100))