]> Dogcows Code - chaz/p5-DBIx-Class-ResultSet-RecursiveUpdate/blobdiff - lib/DBIx/Class/ResultSet/RecursiveUpdate.pm
don't autovivify an id key in the updates hash
[chaz/p5-DBIx-Class-ResultSet-RecursiveUpdate] / lib / DBIx / Class / ResultSet / RecursiveUpdate.pm
index 2d0c235ae5370a532b3add0ce8401ac6c0f70b39..e9b56e4f170edae2802de448386417e8c0d558da 100644 (file)
@@ -47,22 +47,27 @@ sub recursive_update {
         };
     $resolved ||= {};
 
-    # warn 'entering: ' . $self->result_source->from();
+    my $source = $self->result_source;
+
+    # warn 'entering: ' . $source->from();
     carp 'fixed fields needs to be an array ref'
         if defined $fixed_fields && ref $fixed_fields ne 'ARRAY';
 
     if ( blessed($updates) && $updates->isa('DBIx::Class::Row') ) {
         return $updates;
     }
-    if ( $updates->{id} ) {
+    if ( exists $updates->{id} ) {
+        # warn "finding object by id " . $updates->{id} . "\n";
         $object = $self->find( $updates->{id}, { key => 'primary' } );
+        # warn "object not found by id\n"
+        #     unless defined $object;
     }
 
     my %fixed_fields = map { $_ => 1 } @$fixed_fields
         if $fixed_fields;
     my @missing =
         grep { !exists $updates->{$_} && !exists $fixed_fields{$_} }
-        $self->result_source->primary_columns;
+        $source->primary_columns;
     if ( !$object && !scalar @missing ) {
 
         # warn 'finding by: ' . Dumper( $updates ); use Data::Dumper;
@@ -96,8 +101,6 @@ sub recursive_update {
     #    warn 'updates: ' . Dumper( $updates ); use Data::Dumper;
     #    warn 'columns: ' . Dumper( \%columns_by_accessor );
     for my $name ( keys %$updates ) {
-        my $source = $self->result_source;
-
         # columns
         if ( exists $columns_by_accessor{$name}
             && !( $source->has_relationship($name)
This page took 0.020434 seconds and 4 git commands to generate.