flutter moor - обновлять только указанные столбцы без специального запроса
Я хочу обновить только указанные столбцы при выполнении update(table).replace(model)
он заменяет все данные, соответствующие первичному ключу. Как обновить только указанный столбец без написания пользовательских запросов.
2 ответа
Вы должны объявить свою функцию с помощью Insertable
как это:
Future updateVisit(Insertable<Visit> visit) => update(visits).replace(visit);
Итак, когда вы вызываете функцию, вы можете сделать это:
visitDao.updateVisit(visit.copyWith(completed: newValue))
или
visitDao.updateVisit(VisitsCompanion(id: Value(visitId), checkOut: Value(DateTime.now())));
В документации я обнаружил, что это может быть полезно в зависимости от вашего варианта использования. Вот как вы можете заменить значения одного столбца.
Future moveImportantTasksIntoCategory(Category target) {
// for updates, we use the "companion" version of a
generated class. This wraps the
// fields in a "Value" type which can be set to be absent using "Value.absent()". This
// allows us to separate between "SET category = NULL"
(`category: Value(null)`) and not
// updating the category at all: `category: Value.absent()`.
return (update(todos)
..where((t) => t.title.like('%Important%'))
).write(TodosCompanion(
category: Value(target.id),
),
);
}