X-Git-Url: http://git.shadowcat.co.uk/gitweb/gitweb.cgi?a=blobdiff_plain;f=lib%2FDBIx%2FClass%2FRelationship.pm;h=44ed65b36cbf3e09c5d8484e3d170a0f86c49097;hb=0d6f11f10031c112775076275f53fbcad1ed67ff;hp=c479e4c707021fae6dbc5b37011a6ea2e94fc4ed;hpb=d2113a6853f7ae702b922d936f5ac4d323c7da65;p=dbsrgits%2FDBIx-Class-Historic.git diff --git a/lib/DBIx/Class/Relationship.pm b/lib/DBIx/Class/Relationship.pm index c479e4c..44ed65b 100644 --- a/lib/DBIx/Class/Relationship.pm +++ b/lib/DBIx/Class/Relationship.pm @@ -13,15 +13,15 @@ __PACKAGE__->load_own_components(qw/ Base /); -=head1 NAME +=head1 NAME DBIx::Class::Relationship - Inter-table relationships =head1 SYNOPSIS - MyDB::Schema::Actor->has_many('actorroles' => 'MyDB::Schema::ActorRole', + MyDB::Schema::Actor->has_many('actorroles' => 'MyDB::Schema::ActorRole', 'actor'); - MyDB::Schema::Role->has_many('actorroles' => 'MyDB::Schema::ActorRole', + MyDB::Schema::Role->has_many('actorroles' => 'MyDB::Schema::ActorRole', 'role'); MyDB::Schema::ActorRole->belongs_to('role' => 'MyDB::Schema::Role'); MyDB::Schema::ActorRole->belongs_to('actor' => 'MyDB::Schema::Actor'); @@ -31,7 +31,7 @@ DBIx::Class::Relationship - Inter-table relationships $schema->resultset('Actor')->roles(); $schema->resultset('Role')->search_related('actors', { Name => 'Fred' }); - $schema->resultset('ActorRole')->add_to_role({ Name => 'Sherlock Holmes'}); + $schema->resultset('ActorRole')->add_to_roles({ Name => 'Sherlock Holmes'}); See L for more. @@ -65,10 +65,10 @@ we can do this instead: my $fredsbooks = $schema->resultset('Author')->find({ Name => 'Fred' })->books; -Each relationship sets up an accessor method on the +Each relationship sets up an accessor method on the L objects that represent the items of your table. From L objects, -the relationships can be searched using the "search_related" method. +the relationships can be searched using the "search_related" method. In list context, each returns a list of Row objects for the related class, in scalar context, a new ResultSet representing the joined tables is returned. Thus, the calls can be chained to produce complex queries. @@ -83,7 +83,7 @@ the data for an actual item, no time is wasted producing them. will produce a query something like: - SELECT * FROM Author me + SELECT * FROM Author me LEFT JOIN Books books ON books.author = me.id LEFT JOIN Prices prices ON prices.book = books.id WHERE prices.Price <= 5.00 @@ -112,7 +112,7 @@ See L for a list of valid attributes. my $author_obj = $obj->author; $obj->author($new_author_obj); -Creates a relationship where the calling class stores the foreign class's +Creates a relationship where the calling class stores the foreign class's primary key in one (or more) of its columns. If $cond is a column name instead of a join condition hash, that is used as the name of the column holding the foreign key. If $cond is not given, the relname is used as @@ -149,7 +149,7 @@ cascade or restrict will take precedence. =head2 might_have - My::DBIC::Schema::Author->might_have(pseudonym => + My::DBIC::Schema::Author->might_have(pseudonym => 'My::DBIC::Schema::Pseudonyms'); my $pname = $obj->pseudonym; # to get the Pseudonym object @@ -175,16 +175,16 @@ left join. =head2 many_to_many - My::DBIC::Schema::Actor->has_many( actor_roles => + My::DBIC::Schema::Actor->has_many( actor_roles => 'My::DBIC::Schema::ActorRoles', 'actor' ); - My::DBIC::Schema::ActorRoles->belongs_to( role => + My::DBIC::Schema::ActorRoles->belongs_to( role => 'My::DBIC::Schema::Role' ); - My::DBIC::Schema::ActorRoles->belongs_to( actor => + My::DBIC::Schema::ActorRoles->belongs_to( actor => 'My::DBIC::Schema::Actor' ); My::DBIC::Schema::Actor->many_to_many( roles => 'actor_roles', - 'My::DBIC::Schema::Roles' ); + 'role' ); ... @@ -194,7 +194,7 @@ Creates an accessor bridging two relationships; not strictly a relationship in its own right, although the accessor will return a resultset or collection of objects just as a has_many would. 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 +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. =cut