update method
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());
}
}