#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); }