X-Git-Url: http://git.shadowcat.co.uk/gitweb/gitweb.cgi?a=blobdiff_plain;f=lib%2FDBIx%2FClass%2FResultSource.pm;h=4f41baa98c330ee8d007f65da8b58790af1af784;hb=d5a14c53a280677a116b2efb393853a783281b2a;hp=9d5f0dc8f0e55a60c8b86081b5f89a4a5eab9ce7;hpb=a126983e43f896c64e0ae7ba01c8a3d690d8125a;p=dbsrgits%2FDBIx-Class.git diff --git a/lib/DBIx/Class/ResultSource.pm b/lib/DBIx/Class/ResultSource.pm index 9d5f0dc..4f41baa 100644 --- a/lib/DBIx/Class/ResultSource.pm +++ b/lib/DBIx/Class/ResultSource.pm @@ -1568,7 +1568,13 @@ sub _resolve_condition { $self->throw_exception ('Unable to determine relationship name for condition resolution'); } - return $cond->($for, ref $for ? 'me' : $as, $self, $rel, ref $for ? $for : undef); + return $cond->({ + self_alias => ref $for ? $as : $for, + foreign_alias => ref $for ? $self->related_source($rel)->resultset->current_source_alias : $as, + self_resultsource => $self, + foreign_relname => $rel, + self_rowobj => ref $for ? $for : undef + }); } elsif (ref $cond eq 'HASH') { my %ret; @@ -1671,6 +1677,7 @@ sub _resolve_prefetch { "Can't prefetch has_many ${pre} (join cond too complex)") unless ref($rel_info->{cond}) eq 'HASH'; my $dots = @{[$as_prefix =~ m/\./g]} + 1; # +1 to match the ".${as_prefix}" + if (my ($fail) = grep { @{[$_ =~ m/\./g]} == $dots } keys %{$collapse}) { my ($last) = ($fail =~ /([^\.]+)$/); @@ -1684,6 +1691,7 @@ sub _resolve_prefetch { . 'Use at your own risk.' ); } + #my @col = map { (/^self\.(.+)$/ ? ("${as_prefix}.$1") : ()); } # values %{$rel_info->{cond}}; $collapse->{".${as_prefix}${pre}"} = [ $rel_source->_pri_cols ];