DBIx::Class::Helper::ResultSet::RemoveColumns - Remove columns from a ResultSet


DBIx-Class-Helpers documentation Contained in the DBIx-Class-Helpers distribution.

Index


Code Index:

NAME

Top

DBIx::Class::Helper::ResultSet::RemoveColumns - Remove columns from a ResultSet

VERSION

Top

version 2.007000

SYNOPSIS

Top

 package MySchema::ResultSet::Bar;

 use strict;
 use warnings;

 use parent 'DBIx::Class::ResultSet';

 __PACKAGE__->load_components('Helper::ResultSet::RemoveColumns');

 # in code using resultset:
 my $rs = $schema->resultset('Bar')->search(undef, {
    remove_columns => ['giant_text_col', 'password'],
 });

DESCRIPTION

Top

This component allows convenient removal of columns from a select. Normally to do this you would do this by listing all of the columns except the ones you want to remove. This does that part for you. See NOTE in DBIx::Class::Helper::ResultSet for a nice way to apply it to your entire schema.

It doesn't get a lot more complicated than the synopsis. If you are interested in having more control, check out DBIx::Class::Helper::ResultSet::AutoRemoveColumns.

AUTHOR

Top

Arthur Axel "fREW" Schmidt <frioux+cpan@gmail.com>

COPYRIGHT AND LICENSE

Top


DBIx-Class-Helpers documentation Contained in the DBIx-Class-Helpers distribution.

package DBIx::Class::Helper::ResultSet::RemoveColumns;
BEGIN {
  $DBIx::Class::Helper::ResultSet::RemoveColumns::VERSION = '2.007000';
}

# ABSTRACT: Remove columns from a ResultSet

sub _resolved_attrs {
   my $self = $_[0];

   my $attrs  = $self->{attrs}; # not copying on purpose...

   if ( $attrs->{remove_columns} ) {
      my %rc = map { $_ => 1 } @{$attrs->{remove_columns}};
      $attrs->{columns} = [
         grep { !$rc{$_} } $self->result_source->columns
      ]
   }

   return $self->next::method;
}

1;


__END__