问题描述
我想在我的sqflite数据库中存储Day对象的列表。 Day类看起来像这样:
class Day {
String date;
List<DoneTask> doneTasks;
double score = 0;
Day({this.doneTasks,this.date});
}
DoneTask类:
class DoneTask {
Category category;
double score;
String description;
DoneTask({this.category,this.score,this.description});
}
我不知道如何用sqflite实现这一点。
我正在考虑将属性String day
添加到DoneTasks类中,以便首先加载DoneTasks,然后将它们分类到Days中。但这对我来说似乎不是一个好的解决方案,有人知道我该如何更好地做到这一点吗?
对于使用sql来说我是一个很新的人,所以id很喜欢简单的答案:
(这是我用于sqflite的内容:https://flutter.dev/docs/cookbook/persistence/sqlite)
解决方法
如果这是您要使用的数据架构,我建议您使用 noSQL 数据库。当然,我不知道您整个项目的范围,因此出于某种我不知道的原因,SQL 数据库可能更适合。但鉴于您所提供的内容,sqflite 的 noSQL 替代方案似乎是更好的选择。这将允许将记录有效地存储为对象,允许您将对象存储在对象中,而不必创建一堆相互交叉引用的表。这样做对我来说似乎更直观。
,这是我要保存的方式:
- 首先创建一个表来保存您的
Day
对象。在其中仅保存date
和score
属性。
方法Database().insert
返回一个Future<int>
,它是新创建的行的ID,因此您可以使用它来保存DoneTask
并将它们链接到Day
。
- 现在,您可以将
List<DoneTask>
的每个保存在另一个表中,并将列id_day
作为其标识符。