loadRelationsMissing<T extends Model<T>> static method

Future<void> loadRelationsMissing<T extends Model<T>>(
  1. Iterable<T> models,
  2. Iterable<String> relations
)

Lazily loads relations on multiple models if not already loaded.

Only loads relations that aren't already loaded on each model.

Example:

final posts = await Post.query().get();
await Model.loadRelationsMissing(posts, ['author', 'tags']);

Implementation

static Future<void> loadRelationsMissing<T extends Model<T>>(
  Iterable<T> models,
  Iterable<String> relations,
) async {
  for (final relation in relations) {
    // Filter to models that don't have this relation loaded
    final needsLoading = models
        .where((m) => !(m as Model)._asRelations.relationLoaded(relation))
        .toList();
    if (needsLoading.isNotEmpty) {
      await loadRelations(needsLoading, relation);
    }
  }
}