Update docs for new m2m accessors
Jess Robinson [Mon, 19 Jun 2006 17:40:31 +0000 (17:40 +0000)]
lib/DBIx/Class/Relationship.pm
lib/DBIx/Class/Relationship/Base.pm

index 9420ab7..54fda91 100644 (file)
@@ -212,62 +212,6 @@ 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
 relation names are then used in the many_to_many call.
 
-=head3 Created accessors
-
-=head4 $rel
-
-=over 4
-
-=item Arguments: $vals?, $attrs
-
-=back
-
-  my $role_rs = $actor->roles;
-
-  my $role1 = $actor->roles({ name => 'role1' })->first;
-
-Returns a resultset for the foreign table on the right side of the
-many-to-many relationship. (e.g., in the above example, a CD's
-producers). Takes the same arguments as L<DBIx::Class::ResultSet/"search">.
-
-=head4 add_to_$rel
-
-=over 4
-
-=item Arguments: ($foreign_vals | $obj), $link_vals?
-
-=back
-
-  my $role = $schema->resultset('Role')->find(1);
-  $actor->add_to_roles($role);
-      # creates a My::DBIC::Schema::ActorRoles linking table row object
-
-  $actor->add_to_roles({ name => 'lead' }, { salary => 15_000_000 });
-      # creates a new My::DBIC::Schema::Role row object and the linking table
-      # object with an extra column in the link
-
-Adds a linking table object for C<$obj> or C<$foreign_vals>. If the first
-argument is a hash reference, the related object is created first with the
-column values in the hash. If an object reference is given, just the linking
-table object is created. In either case, any additional column values for the
-linking table object can be specified in C<$link_vals>.
-
-=head4 remove_from_$rel
-
-=over 4
-
-=item Arguments: $obj
-
-=back
-
-  my $role = $schema->resultset('Role')->find(1);
-  $actor->remove_from_roles($role);
-      # removes $role's My::DBIC::Schema::ActorRoles linking table row object
-
-Removes the link between the current object and the related object. Note that
-the related object itself won't be deleted unless you call ->delete() on
-it. This method just removes the link between the two objects.
-
 =cut
 
 1;
index 512af42..ac0ecf9 100644 (file)
@@ -379,6 +379,71 @@ sub delete_related {
   return $obj;
 }
 
+=head2 add_to_$rel
+
+B<Currently only available for C<has_many>, C<many-to-many> and 'multi' type
+relationships.>
+
+=over 4
+
+=item Arguments: ($foreign_vals | $obj), $link_vals?
+
+=back
+
+  my $role = $schema->resultset('Role')->find(1);
+  $actor->add_to_roles($role);
+      # creates a My::DBIC::Schema::ActorRoles linking table row object
+
+  $actor->add_to_roles({ name => 'lead' }, { salary => 15_000_000 });
+      # creates a new My::DBIC::Schema::Role row object and the linking table
+      # object with an extra column in the link
+
+Adds a linking table object for C<$obj> or C<$foreign_vals>. If the first
+argument is a hash reference, the related object is created first with the
+column values in the hash. If an object reference is given, just the linking
+table object is created. In either case, any additional column values for the
+linking table object can be specified in C<$link_vals>.
+
+=head2 set_$rel
+
+B<Currently only available for C<many-to-many> relationships.>
+
+=over 4
+
+=item Arguments: (@hashrefs |  @objs)
+
+=back
+
+  my $actor = $schema->resultset('Actor')->find(1);
+  my @roles = $schema->resultset('Role')->search({ role => 
+     { '-in' -> ['Fred', 'Barney'] } } );
+
+  $actor->set_roles(@roles);
+     # Replaces all of $actors previous roles with the two named
+
+Replace all the related objects with the given list of objects. This does a
+C<delete> to remove all related objects, then calls C<add_to_$rel>
+repeatedly to link all the new objects.
+
+=head2 remove_from_$rel
+
+B<Currently only available for C<many-to-many> relationships.>
+
+=over 4
+
+=item Arguments: $obj
+
+=back
+
+  my $role = $schema->resultset('Role')->find(1);
+  $actor->remove_from_roles($role);
+      # removes $role's My::DBIC::Schema::ActorRoles linking table row object
+
+Removes the link between the current object and the related object. Note that
+the related object itself won't be deleted unless you call ->delete() on
+it. This method just removes the link between the two objects.
+
+
 1;
 
 =head1 AUTHORS