Objectbox中如何查询与指定账户相关的所有交易?
解决Objectbox中查询特定账户相关交易的问题
你的问题出在多个link条件默认是AND逻辑,当前代码只会返回同时满足toAccount和fromAccount都是目标账户的交易,而你需要的是满足任一条件的交易,必须用OR来组合两个关联查询。
正确的实现方式是用QueryBuilder.or()将两个link条件包裹起来,代码如下:
Future<List<Transaction>> getAllTransactionsForAccount(int accountId) { final box = objectBox.store.box<Transaction>(); final queryBuilder = box.query(); // 用or()组合两个条件:转入该账户 或 从该账户转出 queryBuilder.or( (qb) => qb.link(Transaction_.toAccount, Account_.id.equals(accountId)), (qb) => qb.link(Transaction_.fromAccount, Account_.id.equals(accountId)), ); return queryBuilder.build().findAsync(); }
代码说明
queryBuilder.or()方法接受两个回调,分别定义两个需要进行OR判断的条件- 第一个回调创建
toAccount关联到目标账户的查询条件(转入交易) - 第二个回调创建
fromAccount关联到目标账户的查询条件(转出交易) - 最终查询会返回满足任一条件的所有
Transaction记录
内容的提问来源于stack exchange,提问作者Neeraj
相关产品推荐
相关产品推荐

