У меня есть две связанные таблицы с внешним ключом, объявленным в моей схеме:
CREATE TABLE Collection(
id INTEGER PRIMARY KEY,
name TEXT,
start_date INT
);
CREATE TABLE Item (
id INTEGER PRIMARY KEY,
collection_id INTEGER,
name TEXT,
FOREIGN KEY (collection_id) REFERENCES Collection(id)
);
И у меня есть модели этих таблиц в Dart:
class Collection {
int id;
String name;
DateTime startDate;
List<Item> items;
Collection({
this.id,
this.name = '',
this.startDate,
this.items,
});
factory Collection.fromJson(Map<String, dynamic> json) => Collection(
id : json["id"],
name : json["name"],
startDate : DateTime.fromMillisecondsSinceEpoch(json["start_date"]),
items : List<Item>.from(json["items"].map((x) => Item.fromJson(x))),
);
Map<String, dynamic> toJson() => {
"id" : id,
"name" : name,
"start_date" : startDate.millisecondsSinceEpoch,
"items" : List<dynamic>.from(items.map((x) => x.toJson())),
};
class Item {
int id;
int collection_id;
String name;
Item({
this.id,
this.collection_id,
this.name = '',
});
factory Item.fromJson(Map<String, dynamic> json) => Item(
id : json["id"],
collection_id : json["collection_id"],
name : json["name"],
);
Map<String, dynamic> toJson() => {
"id" : id,
"collection_id" : collection_id,
"name" : name,
};
Я использую Поставщик БД для извлечения данных из базы данных, но я не знаю, как получить данные из основной таблицы и связанных с ней:
final response = await db.query('Collection', where: 'status = ?', whereArgs: ['in progress']);
return response.isNotEmpty ? Collection.fromJson(response.first) : null;
, поэтому я получаю нулевое исключение при попытке создать экземпляр Collection без данные в поле элементов.
Знаете ли вы, как извлечь данные из основной таблицы и связанных с ней в одном запросе?
Конечно, я могу сделать второй запрос загрузить его, но идея заключается в том, чтобы сделать это в одном запросе.