Левый шарнир в Flutter Sqflite

#database #flutter #sqlite #left-join #relational-database

Вопрос:

когда я использую левое соединение с sqflite, удаление больше не работает. удалить покупку

База данных провайдера.dart

     Future<List<Product>> products() async {
    final Database db = await database;
    final List<Map<String, dynamic>> maps = await db.query('products');
    List<Product> products = List.generate(maps.length, (i) { return Product.fromMap(maps[i]); });
    if (products.isEmpty) {
      for (Product product in defaultProducts) insertProduct(product);
      products = defaultProducts;
    }
    return products;
  }
Future<List<Purchase>> purchases(int order_id) async {
    final Database db = await database;
    final List<Map<String, dynamic>> maps = await db.rawQuery('SELECT P.id,D.id,P.quantity,P.price,P.product_id,P.order_id,D.name AS product_name, D.subtitle AS product_subtitle'
    ' FROM purchases P LEFT JOIN products D ON P.product_id = D.id WHERE order_id = ' order_id.toString());
    List<Purchase> purchases = List.generate(maps.length, (i) { return Purchase.fromMap(maps[i]); });
    return purchases;
  }
void deletePurchase(int id) async {
    final Database db = await database;
    db.delete("purchases", where: "id = ?", whereArgs: [id]);
  }
 

покупки.дротик

 class Purchase {
  int id;
  double quantity;
  double price;
  int product_id;
  int order_id;
  String product_name;
  String product_subtitle;

  Purchase(this.id, this.quantity, this.price, this.product_id, this.order_id, this.product_name, this.product_subtitle);

  Map<String, dynamic> toMap() {
    return {
      'id': id == 0 ? null : id,
      'quantity': quantity,
      'price': price,
      'product_id': product_id,
      'order_id': order_id,

    };
  }
  factory Purchase.fromMap(Map<String, dynamic> map) => new Purchase(
    map['id'],
    map['quantity'],
    map['price'],
    map['product_id'],
    map['order_id'],
    map['product_name'],
    map['product_subtitle'],
  );
}
 

Домой.дарт

 // view 
FutureBuilder<List<Purchase>>(
                              future : ProvidersDataBase.instance.purchases(order_id),
.....
onDismissed: (direction){
   setState(() {
         purchaseUniqueKey = UniqueKey().toString();
        ProvidersDataBase.instance.deletePurchase(purchase.id);

  });
 

как это сделать, чтобы иметь связь между таблицами в файле sqlfile?