X-Git-Url: http://git.shadowcat.co.uk/gitweb/gitweb.cgi?a=blobdiff_plain;f=lib%2FDBIx%2FClass%2FPK.pm;h=23d2b3cd0719ef0cd1e3e4ccb33ae157d10f17b9;hb=b653de5d3898f4c4d6bd65d9ee6c814159d50551;hp=4889b637aa1e810ae9b6d3ca4a86e3090089ae86;hpb=fea3d0452969e98afc0296ba80f90a91ab7dc1be;p=dbsrgits%2FDBIx-Class.git diff --git a/lib/DBIx/Class/PK.pm b/lib/DBIx/Class/PK.pm index 4889b63..23d2b3c 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/; @@ -42,7 +41,7 @@ sub discard_changes { my ($self) = @_; delete $self->{_dirty_columns}; return unless $self->in_storage; # Don't reload if we aren't real! - my ($reload) = $self->find(map { $self->$_ } $self->primary_columns); + my ($reload) = $self->result_source->resultset->find(map { $self->$_ } $self->primary_columns); unless ($reload) { # If we got deleted in the mean-time $self->in_storage(0); return $self; @@ -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,16 +75,15 @@ 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 {