Получите данные из двух таблиц Flatter пола

#database #flutter #sqflite #floor #junction-table

Вопрос:

Я хочу получить данные из двух таблиц, используя floor в flutter, как я могу это сделать?

этот код для получения данных из одной таблицы. эта функция внутри базы данных.g.dart:

 Streamlt;Listlt;Itemgt;gt; getItems() {  return _queryAdapter.queryListStream(  'SELECT * FROM Item WHERE is_active = 1',  mapper: (Maplt;String, Object?gt; row) =gt; Item(  id: row['id'] as int?,  item_id: row['item_id'] as String,  description: row['description'] as String,  salePrice: row['sale_price'] as double,  purchasePrice: row['purchase_price'] as double,  isActive: row['is_active'] as int),  queryableName: 'Item',  isView: false);  }  

Таким образом, возвращаемыми будут объекты Item, но что, если у меня есть таблица соединений из других таблиц, и команда будет такой:

 SELECT junctiont.*, item.*, client.* FROM item INNER JOIN junctiont ON item.id = junctiont.item_id INNER JOIN client ON junctiont.client_id = client.id  

Какой будет функция? а что вернется?.

Ответ №1:

Я нашел ответ, создав новый объект, чтобы вернуть все ближайшие столбцы, или вы можете вернуться в список

 @override  Streamlt;Listlt;Listgt;gt; getBillsMainInfo() {  return _queryAdapter.queryListStream(  'SELECT Bills.id, Biils.bill_number, Bills.total, Bills.datetime, Clients.name FROM Bills INNER JOIN Clients ON Bills.client_id = Clients.id WHERE Bills.is_active = 1',  mapper: (Maplt;String, Object?gt; row) =gt; [  row['id'] as int,  row['bill_number'] as int,  row['datetime'] as String,  row['name'] as String,  row['total'] as double  ],  queryableName: 'Bills',  isView: false);  }