X-Git-Url: https://git.dogcows.com/gitweb?p=chaz%2Fp5-DBIx-Class-ResultSet-RecursiveUpdate;a=blobdiff_plain;f=lib%2FDBIx%2FClass%2FResultSet%2FRecursiveUpdate.pm;h=2dc40cba4f7ba698cddb0b5befa90d60a1420249;hp=39366e714674d98aa619de482be6f46e0aa83662;hb=7947dd6ee9711102d5fb3fc579316d830d610da1;hpb=76b92189b37b84fed8fff6df90966e9c0d4d581b diff --git a/lib/DBIx/Class/ResultSet/RecursiveUpdate.pm b/lib/DBIx/Class/ResultSet/RecursiveUpdate.pm index 39366e7..2dc40cb 100644 --- a/lib/DBIx/Class/ResultSet/RecursiveUpdate.pm +++ b/lib/DBIx/Class/ResultSet/RecursiveUpdate.pm @@ -55,10 +55,16 @@ sub recursive_update { # many to many case if( $self->is_m2m( $name ) ) { my ( $pk ) = $self->_get_pk_for_related( $name ); - my @values = @{$updates->{$name}}; my @rows; my $result_source = $object->$name->result_source; - @rows = $result_source->resultset->search({ $pk => [ @values ] } ) if @values; + for my $elem ( @{$updates->{$name}} ){ + if( ref $elem ){ + push @rows, $result_source->resultset->find( $elem ); + } + else{ + push @rows, $result_source->resultset->find( { $pk => $elem } ); + } + } my $set_meth = 'set_' . $name; $object->$set_meth( \@rows ); }