X-Git-Url: http://git.shadowcat.co.uk/gitweb/gitweb.cgi?a=blobdiff_plain;f=lib%2FDBIx%2FClass%2FManual%2FJoining.pod;h=1948be6bd45c1136d9dba5db5e383b29db2f40fb;hb=d71502b;hp=0cf86bd5bebae764a7a363821a495462e5bc8b94;hpb=4c4964c14a9d0b6568102ee9e2dcb14f3bb0fd17;p=dbsrgits%2FDBIx-Class.git diff --git a/lib/DBIx/Class/Manual/Joining.pod b/lib/DBIx/Class/Manual/Joining.pod index 0cf86bd..1948be6 100644 --- a/lib/DBIx/Class/Manual/Joining.pod +++ b/lib/DBIx/Class/Manual/Joining.pod @@ -1,4 +1,4 @@ -=head1 NAME +=head1 NAME DBIx::Class::Manual::Joining - Manual on joining tables with DBIx::Class @@ -113,7 +113,7 @@ relationships. =head2 Whole related objects -To fetch entire related objects, eg CDs and all Track data, use the +To fetch entire related objects, e.g. CDs and all Track data, use the 'prefetch' attribute: $schema->resultset('CD')->search( @@ -129,7 +129,7 @@ This will produce SQL similar to the following: SELECT cd.ID, cd.Title, cd.Year, tracks.id, tracks.Name, tracks.Artist FROM CD JOIN Tracks ON CD.ID = tracks.CDID WHERE cd.Title = 'Funky CD' ORDER BY 'tracks.id'; The syntax of 'prefetch' is the same as 'join' and implies the -joining, so no need to use both together. +joining, so there is no need to use both together. =head2 Subset of related fields @@ -154,17 +154,17 @@ Which will produce the query: Note that the '+as' does not produce an SQL 'AS' keyword in the output, see the L for an explanation. -This type of column restriction has a downside, the resulting $row +This type of column restriction has a downside, the returned $result object will have no 'track_name' accessor: - while(my $row = $search_rs->next) { - print $row->track_name; ## ERROR + while(my $result = $search_rs->next) { + print $result->track_name; ## ERROR } Instead C must be used: - while(my $row = $search_rs->next) { - print $row->get_colum('track_name'); ## WORKS + while(my $result = $search_rs->next) { + print $result->get_column('track_name'); ## WORKS } =head2 Incomplete related objects @@ -175,14 +175,14 @@ has a very large field you don't need for the current data output. This is better solved by storing that field in a separate table which you only join to when needed. -To fetch an incomplete related object, supply the dotted notation to the '+as' attribute: +To fetch an incomplete related object, supply the dotted notation to the '+as' attribute: $schema->resultset('CD')->search( { 'Title' => 'Funky CD', }, { join => 'tracks', '+select' => ['tracks.Name'], - '+as' => ['tracks.Name'], + '+as' => ['tracks.Name'], order_by => ['tracks.id'], } ); @@ -193,8 +193,8 @@ Which will produce same query as above; Now you can access the result using the relationship accessor: - while(my $row = $search_rs->next) { - print $row->tracks->name; ## WORKS + while(my $result = $search_rs->next) { + print $result->tracks->name; ## WORKS } However, this will produce broken objects. If the tracks id column is @@ -232,13 +232,13 @@ Which is: To perform joins using relations of the tables you are joining to, use a hashref to indicate the join depth. This can theoretically go as -deep as you like (warning, contrived examples!): +deep as you like (warning: contrived examples!): join => { room => { table => 'leg' } } To join two relations at the same level, use an arrayref instead: - join => { room => [ 'chair', 'table' ] } + join => { room => [ 'chair', 'table' ] } Or combine the two: