sql - (SQFLite) 从 2 个连接表中检索数据并将结果查询转换为列表

标签 sql sqlite flutter dart

我的应用中有两个模型,分别命名为 Basket 和 Items。模型篮包含项目列表。所以如下:

篮子:

int id
string name
string imageUrl
List<Items> items

项目:
string name
string description
int basketId

_

我的 2 张 table :

篮子:
id
name
imageUrl

项目:
id
name
description
basketId

我想要做的是检索所有篮子及其所有相应的项目并制作一个 List basketList 对象。我试图加入表格,但我以 4 个包含空项目的篮子而不是一个包含 4 个项目的篮子结束。我正在使用 SQFLite 进行 flutter 。

最佳答案

您可以在不加入表格的情况下执行此操作。首先,您从 sqflite 获得篮子的 Maplist。接下来,当您从 Map 对象转换为 Basket() 对象时,对于列表中的每个篮子,您将获取项目列表并将项目列表添加到篮子中。您可以使用辅助映射函数将 Map 对象从 sqflite 映射到您的对象类。

Future<List<Basket>> getBasketList() async{

var basketMapList = await getBasketMapList();
int count = basketMapList.length;

List<Basket> basketList = List<Basket>();

for (int i=0; i<count; i++){

  basketList.add(Basket.fromMapObject(basketMapList[i]));

  // for each basket, add the list of items...
  Future<List<Item>> itemListFuture = getBasketItemList(basketList[i].basketid);
  itemListFuture.then(
        (itemList) {

          basketList[i].items = itemList;

    },
  );
}

return basketList;

}
// in basket class. Write a similar function for your items object. 
   fromMapObject(Map<String, dynamic> map) {
        this.id = map['id'];
        this.name = map['name'];
        this.imageurl = map['imageurl']; 
  }

关于sql - (SQFLite) 从 2 个连接表中检索数据并将结果查询转换为列表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57962686/

相关文章:

mysql - SQL - 按另一个具有多行的 SQL 语句分组

c# - 如何使用 .NET 中的 OleDb 命名空间连接到 Access 数据库?

python - 无法在 Windows 上使用带有 Python 2.7.3 的 SQLAlchemy 连接到内存中的 SQLite 数据库

java - 我们可以在不更改 APP 版本的情况下更新 Google Play Store 上的 APK

php - Mysql - 执行查询花费太多时间

SQL 连接多个表以及多个参数

flutter - 如何根据给定的行号从0开始删除dart中的特定行

firebase - flutter 中没有这样的方法,方法 add 是在 null 上调用的

android - 如何管理移动应用程序中不断增加的 sqlite 大小?

dart - 用于导航流的 Flutter Bloc