detach method
Delete related row or rows in pivot table and return the number of changes made.
var student = Student();
var classQuery = await student.getClasses();
// Delete single row in pivot table
await classQuery.detach(model:Class());
// delete all related rows in pivot table
await classQuery.detach();
Implementation
Future<int> detach({RelationshipModel? model}) async {
if (query == null) {
throw Exception('cannot query without relationship');
}
var initialParentValue = primaryValue;
Object? relatedParentValue;
if (model != null) {
relatedParentValue = model.primaryValue;
}
String q =
'DELETE FROM $_pivotTable WHERE $_initialForeignKey = $initialParentValue';
if (relatedParentValue != null) {
q += ' AND $_relatedForeignKey = $relatedParentValue';
}
var database = await eloquent.getDatabase;
return await database.rawDelete(q);
}