my %to_update = $self->get_dirty_columns
or return $self;
- $self->throw_exception( "Not in database" ) unless $self->in_storage;
+ $self->throw_exception(
+ 'Result object not marked in_storage: an update() operation is not possible'
+ ) unless $self->in_storage;
my $rows = $self->result_source->schema->storage->update(
$self->result_source, \%to_update, $self->_storage_ident_condition
sub delete {
my $self = shift;
if (ref $self) {
- $self->throw_exception( "Not in database" ) unless $self->in_storage;
+ $self->throw_exception(
+ 'Result object not marked in_storage: a delete() operation is not possible'
+ ) unless $self->in_storage;
$self->result_source->schema->storage->delete(
$self->result_source, $self->_storage_ident_condition
$copied->{$_->ID}++ or $_->copy(
- $foreign_vals ||= $rsrc->_resolve_relationship_condition(
+ $foreign_vals ||= $rsrc->resolve_relationship_condition(
require_join_free_values => 1,
rel_name => $rel_name,
self_result_object => $new,
=cut
sub get_from_storage {
- my $self = shift @_;
- my $attrs = shift @_;
- my $resultset = $self->result_source->resultset;
+ my $self = shift;
- if(defined $attrs) {
- $resultset = $resultset->search(undef, $attrs);
- }
-
- return $resultset->find($self->_storage_ident_condition);
+ # with or without attrs?
+ (
+ defined( $_[0] )
+ ? $self->result_source->resultset->search_rs( undef, $_[0] )
+ : $self->result_source->resultset
+ )->find(
+ $self->_storage_ident_condition
+ );
}
=head2 discard_changes