saveManyRelation<TRelated extends Model<TRelated> > method
Future<List<TRelated> >
saveManyRelation<TRelated extends Model<TRelated> >(
- String relationName,
inherited
Saves multiple related models through a hasMany relationship.
This sets the foreign key on each related model to point to this model, then persists all related models.
Example:
final author = await Author.query().find(1);
await author.saveManyRelation('posts', [
Post(title: 'Post 1', publishedAt: DateTime.now()),
Post(title: 'Post 2', publishedAt: DateTime.now()),
]);
Implementation
Future<List<TRelated>> saveManyRelation<TRelated extends Model<TRelated>>(
String relationName,
List<TRelated> related,
) async {
final def = expectDefinition();
final relationDef = def.relations.cast<RelationDefinition?>().firstWhere(
(r) => r?.name == relationName,
orElse: () => null,
);
if (relationDef == null) {
throw ArgumentError(
'Relation "$relationName" not found on ${def.modelName}',
);
}
if (relationDef.kind != RelationKind.hasMany) {
throw ArgumentError(
'saveManyRelation() can only be used with hasMany relations. '
'Relation "$relationName" is ${relationDef.kind}',
);
}
final results = <TRelated>[];
for (final model in related) {
results.add(await saveRelation<TRelated>(relationName, model));
}
return results;
}