-alias => $as,
-relation_chain_depth => $seen->{-relation_chain_depth} || 0,
},
- $self->_resolve_condition($rel_info->{cond}, $as, $alias, $join) ];
+ $self->_resolve_condition($rel_info->{cond}, $as, $alias, $join)
+ ];
}
}
our $UNRESOLVABLE_CONDITION = \ '1 = 0';
sub _resolve_condition {
- my ($self, $cond, $as, $for, $rel) = @_;
+ my ($self, $cond, $as, $for, $relname) = @_;
if (ref $cond eq 'CODE') {
my $obj_rel = !!ref $for;
self_alias => $obj_rel ? $as : $for,
foreign_alias => $obj_rel ? 'me' : $as,
self_resultsource => $self,
- foreign_relname => $rel || ($obj_rel ? $as : $for),
+ foreign_relname => $relname || ($obj_rel ? $as : $for),
self_rowobj => $obj_rel ? $for : undef
});
}
return \%ret;
} elsif (ref $cond eq 'ARRAY') {
- return [ map { $self->_resolve_condition($_, $as, $for) } @$cond ];
+ return [ map { $self->_resolve_condition($_, $as, $for, $relname) } @$cond ];
} else {
$self->throw_exception ("Can't handle condition $cond yet :(");
}