update method

  1. @override
Future<int> update(
  1. Map<String, Object?> values
)
override

Update rows and return number of changes.

var user = User();

var query = await user.cars();
// update name of all rows to 'car1'.
await query.update({'name':'car1'});

// update name of rows where id = 1 to 1.
await query.where('id',1).update({'name':'car1'});

Implementation

/// ```dart
/// var user = User();
///
/// var query = await user.cars();
/// // update name of all rows to 'car1'.
/// await query.update({'name':'car1'});
///
/// // update name of rows where id = 1 to 1.
/// await query.where('id',1).update({'name':'car1'});
///
/// ```
@override
Future<int> update(Map<String, Object?> values) async {
  if (values.isEmpty) {
    throw Exception('Empty values');
  }
  if (query == null) {
    super.update(values);
  }
  String table = query!.split(' ')[0];
  String q = 'SELECT table1.id FROM ' + query!;
  try {
    resetDistinct();
    resetGroupBy();
    resetSelectedColunns();
    resetSort();
    String selectedQuery = generateQuery(q);
    q = 'UPDATE $table ';
    for (var val in values.entries) {
      if (columns.contains(val.key)) {
        q += ' SET ${val.key} = "${val.value}"';
        if (val.key != values.keys.last) {
          q += ',';
        }
      }
    }
    q = q + ' WHERE id IN ($selectedQuery)';
    final db = await eloquent.getDatabase;
    resetAll();
    return await db.rawUpdate(q);
  } catch (e) {
    throw Exception('Generated query: "$q" \n' + e.toString());
  }
}