Arthur Axel "fREW" Schmidt > DBIx-Class-Helpers-2.016000 > DBIx::Class::Helper::Row::ProxyResultSetMethod

Download:
DBIx-Class-Helpers-2.016000.tar.gz

Dependencies

Annotate this POD

CPAN RT

Open  0
View/Report Bugs
Module Version: 2.016000   Source   Latest Release: DBIx-Class-Helpers-2.023007

NAME ^

DBIx::Class::Helper::Row::ProxyResultSetMethod - Efficiently reuse ResultSet methods from results

VERSION ^

version 2.016000

SYNOPSIS ^

ResultSet:

 package MyApp::Schema::ResultSet::Foo;

 use base 'DBIx::Class::ResultSet';

 __PACKAGE__->load_components(qw(
    Helper::ResultSet::CorrelateRelationship
 ));

 ...;

 sub with_friend_count {
    shift->search(undef, {
       '+columns' => {
          'friend_count' => $self->correlate('friends')->count_rs->as_query,
       },
    })
 }

Result:

 package MyApp::Schema::Result::Foo;

 use base 'DBIx::Class::Core';

 __PACKAGE__->load_components(qw( Helper::Row::ProxyResultSetMethod ));

 __PACKAGE__->proxy_resultset_method('friend_count');

or with DBIx::Class::Candy:

 package MyApp::Schema::Result::Foo;

 use DBIx::Class::Candy -components => ['Helper::Row::ProxyResultSetMethod'];

 proxy_resultset_method 'friend_count';

Elsewhere:

 my $row = $foo_rs->first;
 say $row->friend_count . ' friends';

DESCRIPTION ^

This module makes reusing resultset methods from a result trivially easy. You should be using it.

METHODS ^

proxy_resultset_method

 __PACKAGE__->proxy_resultset_method( $name => {
    slot             => $slot,
    resultset_method => $rs_method
 });

proxy_resultset_method's first argument is the name of the method to generate and is required. The other two arguments, $slot, and $resultset_method are optional. If unspecified $slot will default to $name and $resultset_method will default to "with_$name". $slot is the column that the data being retrieved is stored as in the ResultSet method being proxied to. $resultset_method is (duh) the ResultSet method being proxied to.

CANDY EXPORTS ^

If used in conjunction with DBIx::Class::Candy this component will export:

proxy_resultset_method

DEDICATION ^

This module is dedicated to Ray Bradbury, who wrote Something Wicked This Way Comes, Dandelion Wine, and numerous short stories, plays, etc etc. Read this author's books.

AUTHOR ^

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

COPYRIGHT AND LICENSE ^

This software is copyright (c) 2012 by Arthur Axel "fREW" Schmidt.

This is free software; you can redistribute it and/or modify it under the same terms as the Perl 5 programming language system itself.

syntax highlighting: