matchMorphToOne method

List<Map<String, dynamic>> matchMorphToOne(
  1. List<Map<String, dynamic>> parents,
  2. List<Map<String, dynamic>> results,
  3. String relation,
  4. String morphKey,
  5. String relatedKey,
)

Implementation

List<Map<String, dynamic>> matchMorphToOne(
  List<Map<String, dynamic>> parents,
  List<Map<String, dynamic>> results,
  String relation,
  String morphKey,
  String relatedKey,
) {
  final dict = <String, Map<String, dynamic>>{};
  for (var row in results) {
    final key = row[relatedKey].toString();
    dict[key] = row;
  }
  return parents.map((parent) {
    final clone = Map<String, dynamic>.from(parent);
    final lookupKey = parent[morphKey]?.toString();
    clone[relation] = lookupKey != null ? dict[lookupKey] : null;
    return clone;
  }).toList();
}