|
NAMEDBIx::Class::Helper::Row::ProxyResultSetMethod - Efficiently reuse ResultSet methods from results with fallbackSYNOPSISResultSet:package MyApp::Schema::ResultSet::Foo; use parent '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 parent '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'; DESCRIPTIONThis module makes reusing resultset methods from a result trivially easy. You should be using it.METHODSproxy_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. If you did not call the "with_*" method on your ResultSet, and call the proxy method, it will transparently fallback and do the call and fetch the needed data. E.g.: my $foo = $schema->resultset('Foo')->first; ## did not call with_friend_count print $foo->friend_count; ## will produce desired result magically CANDY EXPORTSIf used in conjunction with DBIx::Class::Candy this component will export:
DEDICATIONThis 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.AUTHORArthur Axel "fREW" Schmidt <frioux+cpan@gmail.com>COPYRIGHT AND LICENSEThis software is copyright (c) 2020 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.
Visit the GSP FreeBSD Man Page Interface. |