gpt4 book ai didi

flutter-moor - 如何使用一对多连接创建 Flutter Moor 关系

转载 作者:行者123 更新时间:2023-12-03 15:27:45 25 4
gpt4 key购买 nike

我有一个表类别,它与一对多关系中的任务表相关,我正在尝试使用 Moor 执行连接。

我想返回与类别匹配的任务列表的列表。我该怎么做?

      Stream<List<CategoryWithTask>> watchAllCategories() {
return (select(categories)
..orderBy(([
(c) => OrderingTerm(expression: c.name),
])))
.join([leftOuterJoin(tasks, tasks.categoryId.equalsExp(categories.id))])
.watch()
.map((rows) => rows.map(
(row) {
return CategoryWithTask(
category: row.readTable(categories),
task: row.readTable(tasks)); // How do I modify this line to return a list of tasks corresponding to a category?
},
).toList());
}

最佳答案

在 Github 上创建问题后,我在 Flutter Moor 的人的支持下设法找到了一种方法。以下是工作代码;

  Stream<List<CategoryWithTasks>> watchAllCategories() {
return (select(categories)
..orderBy(([
(c) => OrderingTerm(expression: c.name),
])))
.join([leftOuterJoin(tasks, tasks.categoryId.equalsExp(categories.id))])
.watch()
.map((rows) {
final groupedData = <Category, List<Task>>{};

for (final row in rows) {
final category = row.readTable(categories);
final task = row.readTable(tasks);

final list = groupedData.putIfAbsent(category, () => []);
if (task != null) list.add(task);
}

return [
for (final entry in groupedData.entries)
CategoryWithTasks(category: entry.key, tasks: entry.value)
];
});
}

关于flutter-moor - 如何使用一对多连接创建 Flutter Moor 关系,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60252122/

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