X-Git-Url: http://git.shadowcat.co.uk/gitweb/gitweb.cgi?p=dbsrgits%2FDBIx-Class.git;a=blobdiff_plain;f=lib%2FDBIx%2FClass%2FRelationship%2FBelongsTo.pm;h=aca69aa0e1ffb35cec1fab09996f4258d9b2fd45;hp=0cc441e1cf6c1643a9266d4670ffe4d027d7a409;hb=103647d504eeadac7d179057e9f4d5eda0cd7c1b;hpb=484c9dda865880cd4e1cda8e0117f1d073a6aa7e diff --git a/lib/DBIx/Class/Relationship/BelongsTo.pm b/lib/DBIx/Class/Relationship/BelongsTo.pm index 0cc441e..aca69aa 100644 --- a/lib/DBIx/Class/Relationship/BelongsTo.pm +++ b/lib/DBIx/Class/Relationship/BelongsTo.pm @@ -6,14 +6,15 @@ use warnings; sub belongs_to { my ($class, $rel, $f_class, $cond, $attrs) = @_; eval "require $f_class"; - my %f_primaries = eval { %{ $f_class->_primaries } }; + my %f_primaries; + $f_primaries{$_} = 1 for eval { $f_class->primary_columns }; my $f_loaded = !$@; # single key relationship if (not defined $cond) { $class->throw("Can't infer join condition for ${rel} on ${class}; unable to load ${f_class}") unless $f_loaded; my ($pri, $too_many) = keys %f_primaries; $class->throw("Can't infer join condition for ${rel} on ${class}; ${f_class} has multiple primary key") if $too_many; - my $acc_type = ($class->_columns->{$rel}) ? 'filter' : 'single'; + my $acc_type = ($class->has_column($rel)) ? 'filter' : 'single'; $class->add_relationship($rel, $f_class, { "foreign.${pri}" => "self.${rel}" }, { accessor => $acc_type, %{$attrs || {}} }