X-Git-Url: http://git.shadowcat.co.uk/gitweb/gitweb.cgi?a=blobdiff_plain;f=lib%2FDBIx%2FClass%2FResultSetColumn.pm;h=876a3c1358ea3604d118084466ca693cd115327e;hb=71d496fe3a12c3644ef0628243d34b49cb701556;hp=133e6ffb404d649e650fa5cb0b090ea766a12dbc;hpb=2bb7b40b94dd99970f48179d0dc945852a3a1557;p=dbsrgits%2FDBIx-Class-Historic.git diff --git a/lib/DBIx/Class/ResultSetColumn.pm b/lib/DBIx/Class/ResultSetColumn.pm index 133e6ff..876a3c1 100644 --- a/lib/DBIx/Class/ResultSetColumn.pm +++ b/lib/DBIx/Class/ResultSetColumn.pm @@ -16,7 +16,8 @@ use base 'DBIx::Class'; =head1 DESCRIPTION -A convenience class used to perform operations on a specific column of a resultset. +A convenience class used to perform operations on a specific column of +a resultset. =cut @@ -26,19 +27,16 @@ A convenience class used to perform operations on a specific column of a results my $obj = DBIx::Class::ResultSetColumn->new($rs, $column); -Creates a new resultset column object from the resultset and column passed as params +Creates a new resultset column object from the resultset and column +passed as params. Used internally by L. =cut sub new { my ($class, $rs, $column) = @_; $class = ref $class if ref $class; - - my $object_ref = { _column => $column, - _parent_resultset => $rs }; - - my $new = bless $object_ref, $class; - $new->throw_exception("column must be supplied") unless ($column); + my $new = bless { _column => $column, _parent_resultset => $rs }, $class; + $new->throw_exception("column must be supplied") unless $column; return $new; } @@ -52,15 +50,16 @@ sub new { =back -Returns the next value of the column in the resultset (C is there is none). +Returns the next value of the column in the resultset (or C if +there is none). -Much like $rs->next but just returning the one value +Much like L but just returning the +one value. =cut sub next { my $self = shift; - $self->{_resultset} = $self->{_parent_resultset}->search(undef, {select => [$self->{_column}], as => [$self->{_column}]}) unless ($self->{_resultset}); my ($row) = $self->{_resultset}->cursor->next; return $row; @@ -76,9 +75,11 @@ sub next { =back -Returns all values of the column in the resultset (C is there are none). +Returns all values of the column in the resultset (or C if +there are none). -Much like $rs->all but returns values rather than row objects +Much like L but returns values rather +than row objects. =cut @@ -97,13 +98,15 @@ sub all { =back -Wrapper for ->func. Returns the lowest value of the column in the resultset (C is there are none). + my $first_year = $year_col->min(); + +Wrapper for ->func. Returns the lowest value of the column in the +resultset (or C if there are none). =cut sub min { - my $self = shift; - return $self->func('MIN'); + return shift->func('MIN'); } =head2 max @@ -116,13 +119,15 @@ sub min { =back -Wrapper for ->func. Returns the highest value of the column in the resultset (C is there are none). + my $last_year = $year_col->max(); + +Wrapper for ->func. Returns the highest value of the column in the +resultset (or C if there are none). =cut sub max { - my $self = shift; - return $self->func('MAX'); + return shift->func('MAX'); } =head2 sum @@ -135,13 +140,15 @@ sub max { =back -Wrapper for ->func. Returns the sum of all the values in the column of the resultset. Use on varchar-like columns at your own risk. + my $total = $prices_col->sum(); + +Wrapper for ->func. Returns the sum of all the values in the column of +the resultset. Use on varchar-like columns at your own risk. =cut sub sum { - my $self = shift; - return $self->func('SUM'); + return shift->func('SUM'); } =head2 func @@ -154,19 +161,18 @@ sub sum { =back -Runs a query using the function on the column and returns the value. For example - $rs $schema->resultset("CD")->search({}); - $rs->get_column('title')->func('LENGTH'); + $rs = $schema->resultset("CD")->search({}); + $length = $rs->get_column('title')->func('LENGTH'); + +Runs a query using the function on the column and returns the +value. Produces the following SQL: -Produces the following SQL - SELECT LENGTH( title ) from cd me + SELECT LENGTH( title ) FROM cd me =cut sub func { - my $self = shift; - my $function = shift; - + my ($self,$function) = @_; my ($row) = $self->{_parent_resultset}->search(undef, {select => {$function => $self->{_column}}, as => [$self->{_column}]})->cursor->next; return $row; } @@ -177,6 +183,8 @@ sub func { Luke Saunders +Jess Robinson + =head1 LICENSE You may distribute this code under the same terms as Perl itself.