当我将左连接与 sqflite 一起使用时,删除不再有效。 delete purchase
ProviderDatabase.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]);
}
purchases.dart
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'],
);
}
Home.dart
// view
FutureBuilder<List<Purchase>>(
future : ProvidersDataBase.instance.purchases(order_id),
.....
onDismissed: (direction){
setState(() {
purchaseUniqueKey = UniqueKey().toString();
ProvidersDataBase.instance.deletePurchase(purchase.id);
});
如何实现sqlfile中表之间的关系?