X-Git-Url: http://git.shadowcat.co.uk/gitweb/gitweb.cgi?a=blobdiff_plain;f=lib%2FDBIx%2FClass%2FPK.pm;h=4c8f1063201224a1a6214b102f15e23eedd1822c;hb=d54a54fcd191ec6ebb328c97916e75a138188d4f;hp=894932c12954c69ec08c2dbe7171c4e7ce67c466;hpb=d7156e507aaffa832df977118f015e0833bc87ff;p=dbsrgits%2FDBIx-Class-Historic.git diff --git a/lib/DBIx/Class/PK.pm b/lib/DBIx/Class/PK.pm index 894932c..4c8f106 100644 --- a/lib/DBIx/Class/PK.pm +++ b/lib/DBIx/Class/PK.pm @@ -2,7 +2,6 @@ package DBIx::Class::PK; use strict; use warnings; -use Tie::IxHash; use base qw/DBIx::Class::Row/; @@ -61,7 +60,7 @@ a class method. sub id { my ($self) = @_; - $self->throw( "Can't call id() as a class method" ) unless ref $self; + $self->throw_exception( "Can't call id() as a class method" ) unless ref $self; my @pk = $self->_ident_values; return (wantarray ? @pk : $pk[0]); } @@ -76,22 +75,21 @@ L. sub ID { my ($self) = @_; - $self->throw( "Can't call ID() as a class method" ) unless ref $self; + $self->throw_exception( "Can't call ID() as a class method" ) unless ref $self; return undef unless $self->in_storage; return $self->_create_ID(map { $_ => $self->{_column_data}{$_} } $self->primary_columns); } sub _create_ID { - my ($class,%vals) = @_; + my ($self,%vals) = @_; return undef unless 0 == grep { !defined } values %vals; - $class = ref $class || $class; - return join '|', $class, map { $_ . '=' . $vals{$_} } sort keys %vals; + return join '|', ref $self || $self, $self->result_source->name, map { $_ . '=' . $vals{$_} } sort keys %vals; } sub ident_condition { - my ($self) = @_; + my ($self, $alias) = @_; my %cond; - $cond{$_} = $self->get_column($_) for $self->primary_columns; + $cond{(defined $alias ? "${alias}.$_" : $_)} = $self->get_column($_) for $self->primary_columns; return \%cond; }