X-Git-Url: http://git.shadowcat.co.uk/gitweb/gitweb.cgi?a=blobdiff_plain;f=lib%2FDBIx%2FClass%2FRow.pm;h=5d6285f5f9ffb346acfda98eafbbd31523d1976d;hb=18bb9eca6d66b39de84643f2241b01cc57901c4c;hp=89f1de30221127f007b145cc77cb8200595cd690;hpb=3df4269ebcc71ebb69b00225f0a12762aa3e9b21;p=dbsrgits%2FDBIx-Class.git diff --git a/lib/DBIx/Class/Row.pm b/lib/DBIx/Class/Row.pm index 89f1de3..5d6285f 100644 --- a/lib/DBIx/Class/Row.pm +++ b/lib/DBIx/Class/Row.pm @@ -354,18 +354,17 @@ sub insert { $self->{related_resultsets} = {}; foreach my $relname (keys %related_stuff) { - my $rel_obj = $related_stuff{$relname}; - my @cands; - if (Scalar::Util::blessed($rel_obj) - && $rel_obj->isa('DBIx::Class::Row')) - { - @cands = ($rel_obj); - } - elsif (ref $rel_obj eq 'ARRAY') { - @cands = @$rel_obj; - } + next unless $source->has_relationship ($relname); + + my @cands = ref $related_stuff{$relname} eq 'ARRAY' + ? @{$related_stuff{$relname}} + : $related_stuff{$relname} + ; - if (@cands) { + if (@cands + && Scalar::Util::blessed($cands[0]) + && $cands[0]->isa('DBIx::Class::Row') + ) { my $reverse = $source->reverse_relationship_info($relname); foreach my $obj (@cands) { $obj->set_from_related($_, $self) for keys %$reverse;