Skip site navigation (1)Skip section navigation (2)

FreeBSD Manual Pages

  
 
  

home | help
DBIx::Class::Helper::RUserPContributedsPerleDocum:Row::ProxyResultSetMethod(3)

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

SYNOPSIS
       ResultSet:

	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';

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.

       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 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) 2017 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.

perl v5.24.1		     DBIx::Class::Helper::Row::ProxyResultSetMethod(3)

NAME | SYNOPSIS | DESCRIPTION | METHODS | CANDY EXPORTS | DEDICATION | AUTHOR | COPYRIGHT AND LICENSE

Want to link to this manual page? Use this URL:
<https://www.freebsd.org/cgi/man.cgi?query=DBIx::Class::Helper::Row::ProxyResultSetMethod&sektion=3&manpath=FreeBSD+12.1-RELEASE+and+Ports>

home | help