use base qw/DBIx::Class/;
use Scalar::Util 'blessed';
-use DBIx::Class::_Util qw( dbic_internal_try fail_on_internal_call );
+use DBIx::Class::_Util qw(
+ dbic_internal_try fail_on_internal_call
+ DUMMY_ALIASPAIR
+);
use DBIx::Class::Carp;
use SQL::Abstract qw( is_literal_value is_plain_value );
my $rel_obj = $related_stuff{$rel_name};
if (! $self->{_rel_in_storage}{$rel_name}) {
- next unless (blessed $rel_obj && $rel_obj->isa('DBIx::Class::Row'));
+ next unless (blessed $rel_obj && $rel_obj->isa(__PACKAGE__));
next unless $rsrc->_pk_depends_on(
$rel_name, { $rel_obj->get_columns }
: $related_stuff{$rel_name}
;
- if (@cands && blessed $cands[0] && $cands[0]->isa('DBIx::Class::Row')
+ if (@cands && blessed $cands[0] && $cands[0]->isa(__PACKAGE__)
) {
my $reverse = $rsrc->reverse_relationship_info($rel_name);
foreach my $obj (@cands) {
$self->in_storage(0);
}
else {
- my $attrs = @_ > 1 && ref $_[$#_] eq 'HASH' ? { %{pop(@_)} } : {};
+ my $attrs = @_ > 1 && ref $_[-1] eq 'HASH' ? { %{pop(@_)} } : {};
my $query = ref $_[0] eq 'HASH' ? $_[0] : {@_};
$self->result_source->resultset->search_rs(@_)->delete;
}
$copied->{$_->ID}++ or $_->copy(
$foreign_vals ||= $rsrc->_resolve_relationship_condition(
- infer_values_based_on => {},
+ require_join_free_values => 1,
rel_name => $rel_name,
self_result_object => $new,
- self_alias => "\xFE", # irrelevant
- foreign_alias => "\xFF", # irrelevant,
- )->{inferred_values}
+ # an API where these are optional would be too cumbersome,
+ # instead always pass in some dummy values
+ DUMMY_ALIASPAIR,
+ )->{join_free_values}
) for $self->related_resultset($rel_name)->all;
}
=cut
-sub insert_or_update {
+sub insert_or_update :DBIC_method_is_indirect_sugar {
DBIx::Class::_ENV_::ASSERT_NO_INTERNAL_INDIRECT_CALLS and fail_on_internal_call;
shift->update_or_insert(@_);
}
=cut
-sub result_source {
+sub result_source :DBIC_method_is_indirect_sugar {
# While getter calls are routed through here for sensible exception text
# it makes no sense to have setters do the same thing
DBIx::Class::_ENV_::ASSERT_NO_INTERNAL_INDIRECT_CALLS