sub new {
my ($class, $rs, $column) = @_;
$class = ref $class if ref $class;
- my $new = bless { _column => $column, _parent_resultset => $rs }, $class;
+ my $new_parent_rs = $rs->search_rs; # we don't want to mess up the original, so clone it
+ $new_parent_rs->{attrs}->{prefetch} = undef; # prefetch causes additional columns to be fetched
+ my $new = bless { _column => $column, _parent_resultset => $new_parent_rs }, $class;
$new->throw_exception("column must be supplied") unless $column;
return $new;
}
sub func {
my ($self,$function) = @_;
- my ($row) = $self->{_parent_resultset}->search(undef, {select => {$function => $self->{_column}}, as => [$self->{_column}]})->cursor->next;
- return $row;
+ my $cursor = $self->{_parent_resultset}->search(undef, {select => {$function => $self->{_column}}, as => [$self->{_column}]})->cursor;
+
+ if( wantarray ) {
+ return map { $_->[ 0 ] } $cursor->all;
+ }
+
+ return ( $cursor->next )[ 0 ];
}
1;