Copy the working mk_hash from HashRefInflator in -current into Cookbook
Dagfinn Ilmari Mannsåker [Mon, 21 May 2007 20:23:36 +0000 (20:23 +0000)]
lib/DBIx/Class/Manual/Cookbook.pod

index 7806b08..8f098af 100644 (file)
@@ -1172,8 +1172,26 @@ C<inflate_result>:
   sub mk_hash {
      my ($me, $rest) = @_;
 
-     return { %$me, 
-        map { ($_ => mk_hash(@{$rest->{$_}})) } keys %$rest
+     # to avoid emtpy has_many rels contain one empty hashref
+     return if (not keys %$me);
+
+     my $def;
+
+     foreach (values %$me) {
+         if (defined $_) {
+             $def = 1;
+             last;
+         }
+     }
+     return unless $def;
+
+     return { %$me,
+         map {
+           ( $_ =>
+              ref($rest->{$_}[0]) eq 'ARRAY' ? [ map { mk_hash(@$_) } @{$rest->{$_}} ]
+                                             : mk_hash( @{$rest->{$_}} )
+           )
+         } keys %$rest
      };
   }