Version 1.001000
DBIx::Class::ResultSet::WithMetaData
package MyApp::Schema::ResultSet::ObjectType; use Moose; use MooseX::Method::Signatures; extends 'DBIx::Class::ResultSet::WithMetaData; method with_substr () { return $self->_with_meta_key( substr => sub { return substr(shift->{name}, 0, 3); } ); } ... # then somewhere else my $object_type_arrayref = $object_type_rs->with_substr->display(); # [{ # 'artistid' => '1', # 'name' => 'Caterwauler McCrae', # 'substr' => 'Cat' # }, # { # 'artistid' => '2', # 'name' => 'Random Boy Band', # 'substr' => 'Ran' # }, # { # 'artistid' => '3', # 'name' => 'We Are Goth', # 'substr' => 'We ' # }]
Attach metadata to rows by chaining ResultSet methods together. When the ResultSet is flattened to an ArrayRef the metadata is merged with the row hashes to give a combined 'hash-plus-other-stuff' representation.
$arrayref_of_row_hashrefs = $rs->display();
This method uses DBIx::Class::ResultClass::HashRefInflator to convert all rows in the ResultSet to HashRefs. Then the subrefs that were added via "_with_meta_key" or "_with_meta_hash" are run for each row and the resulting data merged with them.
$self->_with_meta_key( substr => sub ($row) { return substr(shift->{name}, 0, 3); });
This method allows you populate a certain key for each row hash at "display" time.
$self->_with_object_meta_key( substr => sub { my ($row_hash, $row_obj) = @_; return substr($row_obj->row_method, 0, 3); });
The same as "_with_meta_key" but the subref gets the row object as well as the row hash. This should only be used when you need to access row methods as it's slower to inflate objects.
$self->_with_meta_hash( sub ($row) { my $row = shift; my $return_hash = { substr => substr($row->{name}, 0, 3), substr2 => substr($row->{name}, 0, 4) }; return $return_hash; });
Use this method when you want to populate multiple keys of the hash at the same time. If you just want to populate one key, use "_with_meta_key".
$self->_with_object_meta_hash( sub { my ($row_hash, $row_object) = @_; my $return_hash = { substr => substr($row_object->name, 0, 3), substr2 => substr($row_hash->{name}, 0, 4) }; return $return_hash; });
Like "_with_meta_hash" but the subref gets the row object as well as the row hash. This should only be used when you need to access row methods as it's slower to inflate objects.
$rs = $rs->add_row_info(row => $row, info => { dates => [qw/mon weds fri/] } );
DEPRECATED - this method is quite slow as it requires that you iterate through the resultset each time you want to add metadata. Replaced by "build_metadata".
Luke Saunders <luke.saunders@gmail.com>
As usual, thanks to Matt S Trout for the sanity check.
This library is free software under the same license as perl itself
To install DBIx::Class::ResultSet::WithMetaData, copy and paste the appropriate command in to your terminal.
cpanm
cpanm DBIx::Class::ResultSet::WithMetaData
CPAN shell
perl -MCPAN -e shell install DBIx::Class::ResultSet::WithMetaData
For more information on module installation, please visit the detailed CPAN module installation guide.