detach method

Future<int> detach({
  1. RelationshipModel? model,
})

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);
}