gpt4 book ai didi

aqueduct - Aqueduct 中的多对多查询连接

转载 作者:行者123 更新时间:2023-12-04 01:53:20 24 4
gpt4 key购买 nike

我在 2 个 ManagedObjects(A 和 B)之间有 A -> AB <- B 多对多关系,其中 AB 是联结表。

从 db 查询 A 时,如何将 B 值连接到 AB 关节对象?

Query<A> query = await Query<A>(context)
..join(set: (a) => a.ab);

它给了我一个包含 AB 关节对象的 A 对象列表,但 AB 对象不包括完整的 B 对象,而只有 b.id(不包括 B 类的其他字段)。

干杯

最佳答案

当您调用 join , 一个新的 Query<T>由该方法创建并返回,其中 T是连接类型。所以如果 a.abAB 类型, Query<A>.join返回 Query<AB> (它在内部链接到原始查询)。

既然你有一个新的Query<AB> ,您可以像任何其他查询一样对其进行配置,包括启动另一个连接、添加排序描述符和 where 子句。

有一些文体语法可供选择。您可以将此查询压缩为单行:

final query = Query<A>(context)
..join(set: (a) => a.ab).join(object: (ab) => ab.b);
final results = await query.fetch();

如果查询保持原样,这是可以的,但是当您向查询添加更多条件时,点运算符和级联运算符之间的差异变得难以跟踪。我经常将连接查询拉入它自己的变量中。 (请注意,您不会在联接查询上调用任何执行方法):
final query = Query<A>(context);
final join = query.join(set: (a) => a.ab)
..join(object: (ab) => ab.b);
final results = await query.fetch();

关于aqueduct - Aqueduct 中的多对多查询连接,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51971943/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com