From: Simon Elliott Date: Tue, 26 Jun 2007 20:03:47 +0000 (+0000) Subject: many_to_many supports relation_rs method now X-Git-Tag: v0.08010~135 X-Git-Url: http://git.shadowcat.co.uk/gitweb/gitweb.cgi?a=commitdiff_plain;h=18788bf2719c4a07d9c5d1dc9954302b13ce1142;p=dbsrgits%2FDBIx-Class.git many_to_many supports relation_rs method now --- diff --git a/lib/DBIx/Class/Relationship/ManyToMany.pm b/lib/DBIx/Class/Relationship/ManyToMany.pm index 1cb16ca..34c5e24 100644 --- a/lib/DBIx/Class/Relationship/ManyToMany.pm +++ b/lib/DBIx/Class/Relationship/ManyToMany.pm @@ -22,18 +22,26 @@ sub many_to_many { my $add_meth = "add_to_${meth}"; my $remove_meth = "remove_from_${meth}"; my $set_meth = "set_${meth}"; + my $rs_meth = "${meth}_rs"; $rel_attrs->{alias} ||= $f_rel; - *{"${class}::${meth}"} = sub { + *{"${class}::${meth}_rs"} = sub { my $self = shift; my $attrs = @_ > 1 && ref $_[$#_] eq 'HASH' ? pop(@_) : {}; my @args = ($f_rel, @_ > 0 ? @_ : undef, { %{$rel_attrs||{}}, %$attrs }); - $self->search_related($rel)->search_related( + my $rs = $self->search_related($rel)->search_related( $f_rel, @_ > 0 ? @_ : undef, { %{$rel_attrs||{}}, %$attrs } ); + return $rs; }; + *{"${class}::${meth}"} = sub { + my $self = shift; + my $rs = $self->$rs_meth( @_ ); + return (wantarray ? $rs->all : $rs); + }; + *{"${class}::${add_meth}"} = sub { my $self = shift; @_ > 0 or $self->throw_exception(