X-Git-Url: http://git.shadowcat.co.uk/gitweb/gitweb.cgi?a=blobdiff_plain;f=lib%2FDBIx%2FClass%2FResultSet.pm;h=5d5e811ab09843597aa1ddb41d4248e0ec67dce4;hb=c01ab17249845f2df2cde39a0381971fc64479e4;hp=881033e2ce6e67c34301a6b04e50da33d075d763;hpb=ad3d2d7c1918602f7bf2bf6fbadd97c890626d78;p=dbsrgits%2FDBIx-Class.git diff --git a/lib/DBIx/Class/ResultSet.pm b/lib/DBIx/Class/ResultSet.pm index 881033e..5d5e811 100644 --- a/lib/DBIx/Class/ResultSet.pm +++ b/lib/DBIx/Class/ResultSet.pm @@ -266,7 +266,8 @@ sub _construct_object { $me{$col} = shift @row; } } - my $new = $self->{source}->result_class->inflate_result(\%me, \%pre); + my $new = $self->{source}->result_class->inflate_result( + $self->{source}, \%me, \%pre); $new = $self->{attrs}{record_filter}->($new) if exists $self->{attrs}{record_filter}; return $new; @@ -344,19 +345,59 @@ sub first { return $_[0]->reset->next; } +=head2 update(\%values) + +Sets the specified columns in the resultset to the supplied values + +=cut + +sub update { + my ($self, $values) = @_; + die "Values for update must be a hash" unless ref $values eq 'HASH'; + return $self->{source}->storage->update( + $self->{source}->from, $values, $self->{cond}); +} + +=head2 update_all(\%values) + +Fetches all objects and updates them one at a time. ->update_all will run +cascade triggers, ->update will not. + +=cut + +sub update_all { + my ($self, $values) = @_; + die "Values for update must be a hash" unless ref $values eq 'HASH'; + foreach my $obj ($self->all) { + $obj->set_columns($values)->update; + } + return 1; +} + =head2 delete -Deletes all elements in the resultset. +Deletes the contents of the resultset from its result source. =cut sub delete { my ($self) = @_; - $_->delete for $self->all; + $self->{source}->storage->delete($self->{source}->from, $self->{cond}); return 1; } -*delete_all = \&delete; # Yeah, yeah, yeah ... +=head2 delete_all + +Fetches all objects and deletes them one at a time. ->delete_all will run +cascade triggers, ->delete will not. + +=cut + +sub delete_all { + my ($self) = @_; + $_->delete for $self->all; + return 1; +} =head2 pager