X-Git-Url: http://git.shadowcat.co.uk/gitweb/gitweb.cgi?a=blobdiff_plain;f=lib%2FDBIx%2FClass%2FResultSet.pm;h=bc6dd2e6f2045f32e02c5dcf460a1acfe18796af;hb=fe7748d807ab07e1e2f8aeb2ff8335132e6c241d;hp=c71043ba8740d884869c5dff547430c0442b19e0;hpb=955f159099804674de35818a97a96a1a2d4ffb68;p=dbsrgits%2FDBIx-Class.git diff --git a/lib/DBIx/Class/ResultSet.pm b/lib/DBIx/Class/ResultSet.pm index c71043b..bc6dd2e 100644 --- a/lib/DBIx/Class/ResultSet.pm +++ b/lib/DBIx/Class/ResultSet.pm @@ -1550,11 +1550,13 @@ sub _resolved_attrs { my $collapse = $attrs->{collapse} || {}; if (my $prefetch = delete $attrs->{prefetch}) { + $prefetch = $self->_merge_attr({}, $prefetch); my @pre_order; + my $seen = $attrs->{seen_join} || {}; foreach my $p (ref $prefetch eq 'ARRAY' ? @$prefetch : ($prefetch)) { # bring joins back to level of current class my @prefetch = $source->resolve_prefetch( - $p, $alias, { %{$attrs->{seen_join}||{}} }, \@pre_order, $collapse + $p, $alias, $seen, \@pre_order, $collapse ); push(@{$attrs->{select}}, map { $_->[0] } @prefetch); push(@{$attrs->{as}}, map { $_->[1] } @prefetch);