X-Git-Url: http://git.shadowcat.co.uk/gitweb/gitweb.cgi?a=blobdiff_plain;f=lib%2FDBIx%2FClass%2FPK.pm;h=cf8a194cc99f7a1fb51b82594c4cdf680d734163;hb=0e4fb877c0d647259a7b7f1f38f9dbe65b31cf6b;hp=b2efdf8b2c02050fe9605cacd001578acf485e57;hpb=7e36a763a7ba0f4feb35371ddd421d9bc9e62ad1;p=dbsrgits%2FDBIx-Class.git diff --git a/lib/DBIx/Class/PK.pm b/lib/DBIx/Class/PK.pm index b2efdf8..cf8a194 100644 --- a/lib/DBIx/Class/PK.pm +++ b/lib/DBIx/Class/PK.pm @@ -20,43 +20,6 @@ depending on them. =cut -sub _ident_values { - my ($self) = @_; - return (map { $self->{_column_data}{$_} } $self->primary_columns); -} - -=head2 discard_changes - -Re-selects the row from the database, losing any changes that had -been made. - -This method can also be used to refresh from storage, retrieving any -changes made since the row was last read from storage. - -=cut - -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->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; - } - - %$self = %$reload; - - # Avoid a possible infinite loop with - # sub DESTROY { $_[0]->discard_changes } - bless $reload, 'Do::Not::Exist'; - - return $self; -} - =head2 id Returns the primary key(s) for a row. Can't be called as @@ -72,12 +35,28 @@ sub id { return (wantarray ? @pk : $pk[0]); } +sub _ident_values { + my ($self) = @_; + return (map { $self->{_column_data}{$_} } $self->primary_columns); +} + =head2 ID Returns a unique id string identifying a row object by primary key. Used by L and L. +=over + +=item WARNING + +The default C<_create_ID> method used by this function orders the returned +values by the alphabetical order of the primary column names, B +the L method, which follows the same order in which columns were fed +to L. + +=back + =cut sub ID {