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=84b61c45edf2aff0e0c4916e98474c2531872ef8;hp=2d3efb8dfd19a60157ec56d86bc6876749384389;hb=525b900f8cd814ea1c1294987bfbe8cd7543c040;hpb=11512e7c3673e8467fd7a743a455defcf1f71c41 diff --git a/lib/DBIx/Class/ResultSet/RecursiveUpdate.pm b/lib/DBIx/Class/ResultSet/RecursiveUpdate.pm index 2d3efb8..84b61c4 100644 --- a/lib/DBIx/Class/ResultSet/RecursiveUpdate.pm +++ b/lib/DBIx/Class/ResultSet/RecursiveUpdate.pm @@ -2,8 +2,7 @@ use strict; use warnings; package DBIx::Class::ResultSet::RecursiveUpdate; - -our $VERSION = '0.013'; +# ABSTRACT: like update_or_create - but recursive use base qw(DBIx::Class::ResultSet); @@ -299,7 +298,6 @@ sub _update_relation { #warn "\tcreated and updated related rows\n"; - my @cond; my @related_pks = $related_resultset->result_source->primary_columns; my $rs_rel_delist = $object->$name; @@ -315,6 +313,7 @@ sub _update_relation { # foreign table has multiple pk columns else { + my @cond; for my $obj (@updated_objs) { my %cond_for_obj; for my $col (@related_pks) { @@ -322,7 +321,10 @@ sub _update_relation { } push @cond, \%cond_for_obj; } - $rs_rel_delist = $rs_rel_delist->search_rs( { -not => [@cond] } ); + # only limit resultset if there are related rows left + if (scalar @cond) { + $rs_rel_delist = $rs_rel_delist->search_rs( { -not => [@cond] } ); + } } #warn "\tCOND: " . Dumper(\%cond); @@ -773,40 +775,3 @@ No bugs have been reported. Please report any bugs or feature requests to C, or through the web interface at L. - - -=head1 AUTHOR - -Zbigniew Lukasiak C<< >> -Influenced by code by Pedro Melo. - -=head1 LICENCE AND COPYRIGHT - -Copyright (c) 2008, Zbigniew Lukasiak C<< >>. All rights reserved. - -This module is free software; you can redistribute it and/or -modify it under the same terms as Perl itself. See L. - - -=head1 DISCLAIMER OF WARRANTY - -BECAUSE THIS SOFTWARE IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY -FOR THE SOFTWARE, TO THE EXTENT PERMITTED BY APPLICABLE LAW. EXCEPT WHEN -OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES -PROVIDE THE SOFTWARE "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER -EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED -WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE -ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE SOFTWARE IS WITH -YOU. SHOULD THE SOFTWARE PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL -NECESSARY SERVICING, REPAIR, OR CORRECTION. - -IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING -WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR -REDISTRIBUTE THE SOFTWARE AS PERMITTED BY THE ABOVE LICENCE, BE -LIABLE TO YOU FOR DAMAGES, INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL, -OR CONSEQUENTIAL DAMAGES ARISING OUT OF THE USE OR INABILITY TO USE -THE SOFTWARE (INCLUDING BUT NOT LIMITED TO LOSS OF DATA OR DATA BEING -RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD PARTIES OR A -FAILURE OF THE SOFTWARE TO OPERATE WITH ANY OTHER SOFTWARE), EVEN IF -SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF -SUCH DAMAGES.