Hello,

I'd like add_to_$rel return the $link instead of $obj in ::ManyToMany.pm. I've inlined a diff below that does so, with an updated test and documentation patch against http://dev.catalyst.perl.org/repos/bast/DBIx-Class/0.08/tags/0.08109

Index: t/relationship/core.t
===================================================================
--- t/relationship/core.t       (revision 7380)
+++ t/relationship/core.t       (working copy)
@@ -9,7 +9,7 @@
my $schema = DBICTest->init_schema();
my $sdebug = $schema->storage->debug;

-plan tests => 79;
+plan tests => 80;

# has_a test
my $cd = $schema->resultset("CD")->find(4);
@@ -185,7 +185,10 @@
my $prod_before_count = $schema->resultset('Producer')->count;
is( $prod_rs->count, 0, "CD doesn't yet have any producers" );
my $prod = $schema->resultset('Producer')->find(1);
-$cd->add_to_producers($prod);
+isa_ok(
+  $cd->add_to_producers($prod),
+  'DBICTest::Schema::CD_to_Producer' => '$cd->add_to_producers($prod)'
+);
is( $prod_rs->count(), 1, 'many_to_many add_to_$rel($obj) count ok' );
is( $prod_rs->first->name, 'Matt S Trout',
    'many_to_many add_to_$rel($obj) ok' );
Index: lib/DBIx/Class/Relationship/ManyToMany.pm
===================================================================
--- lib/DBIx/Class/Relationship/ManyToMany.pm   (revision 7380)
+++ lib/DBIx/Class/Relationship/ManyToMany.pm   (working copy)
@@ -102,7 +102,7 @@
      my $link = $self->search_related($rel)->new_result($link_vals);
      $link->set_from_related($f_rel, $obj);
      $link->insert();
-         return $obj;
+         return $link;
    };

    my $set_meth_name = join '::', $class, $set_meth;
Index: lib/DBIx/Class/Relationship.pm
===================================================================
--- lib/DBIx/Class/Relationship.pm      (revision 7380)
+++ lib/DBIx/Class/Relationship.pm      (working copy)
@@ -595,13 +595,14 @@
To add a role for your actor, and fill in the year of the role in the
actor_roles table:

-  $actor->add_to_roles($role, { year => 1995 });
+  my $link = $actor->add_to_roles($role, { year => 1995 });

In the above example, ActorRoles is the link table class, and Role is the
foreign class. The C<$link_rel_name> parameter is the name of the accessor for
the has_many relationship from this table to the link table, and the
C<$foreign_rel_name> parameter is the accessor for the belongs_to relationship
-from the link table to the foreign table.
+from the link table to the foreign table. The My::DBIC::Schema::ActorRoles
+instance is returned.

To use many_to_many, existing relationships from the original table to the link table, and from the link table to the end table must already exist, these

_______________________________________________
List: http://lists.scsys.co.uk/cgi-bin/mailman/listinfo/dbix-class
IRC: irc.perl.org#dbix-class
SVN: http://dev.catalyst.perl.org/repos/bast/DBIx-Class/
Searchable Archive: http://www.grokbase.com/group/[email protected]

Reply via email to