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(
- infer_values_based_on => {},
+ $foreign_vals ||= $rsrc->resolve_relationship_condition(
+ require_join_free_values => 1,
rel_name => $rel_name,
self_result_object => $new,
# an API where these are optional would be too cumbersome,
# instead always pass in some dummy values
DUMMY_ALIASPAIR,
- )->{inferred_values}
+ )->{join_free_values}
) for $self->related_resultset($rel_name)->all;
}