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

FreeBSD Manual Pages

  
 
  

home | help
DBIx::Class::Helper::RUsertContributedxPerlss::Helper::ResultSet::Shortcut(3)

NAME
       DBIx::Class::Helper::ResultSet::Shortcut	- Shortcuts to common searches
       (->order_by, etc)

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

	__PACKAGE__->load_components(qw{Helper::ResultSet::Shortcut});

	...

	1;

       And then	elsewhere:

	# let's	say you	grab a resultset from somewhere	else
	my $foo_rs = get_common_rs()
	# but I'd like it sorted!
	  ->order_by({ -desc =>	'power_level' })
	# and without those other dumb columns
	  ->columns([qw/cromulence_ratio has_jimmies_rustled/])
	# but get rid of those duplicates
	  ->distinct
	# and put those	straight into hashrefs,	please
	  ->hri
	# but only give	me the first 3
	  ->rows(3);

DESCRIPTION
       This helper provides convenience	methods	for resultset modifications.

       See "NOTE" in DBIx::Class::Helper::ResultSet for	a nice way to apply it
       to your entire schema.

SEE ALSO
       This component is actually a number of other components put together.
       It will get more	components added to it over time.  If you are worried
       about all the extra methods you won't use or something, using the
       individual shortcuts is a simple	solution.  All the documentation will
       remain here, but	the individual components are:

       o DBIx::Class::Helper::ResultSet::Shortcut::HRI

       o DBIx::Class::Helper::ResultSet::Shortcut::OrderBy

       o DBIx::Class::Helper::ResultSet::Shortcut::OrderByMagic

	 (adds the "magic string" functionality	to
	 "DBIx::Class::Helper::ResultSet::Shortcut::OrderBy"))

       o DBIx::Class::Helper::ResultSet::Shortcut::GroupBy

       o DBIx::Class::Helper::ResultSet::Shortcut::Distinct

       o DBIx::Class::Helper::ResultSet::Shortcut::Rows

       o DBIx::Class::Helper::ResultSet::Shortcut::Limit

	 (inherits from	"DBIx::Class::Helper::ResultSet::Shortcut::Rows")

       o DBIx::Class::Helper::ResultSet::Shortcut::HasRows

	 (inherits from	"DBIx::Class::Helper::ResultSet::Shortcut::Rows")

       o DBIx::Class::Helper::ResultSet::Shortcut::Columns

       o DBIx::Class::Helper::ResultSet::Shortcut::AddColumns

       o DBIx::Class::Helper::ResultSet::Shortcut::Page

       o DBIx::Class::Helper::ResultSet::Shortcut::LimitedPage

	 (inherits from	"DBIx::Class::Helper::ResultSet::Shortcut::Page" and
	 DBIx::Class::Helper::ResultSet::Shortcut::Rows)

       o DBIx::Class::Helper::ResultSet::Shortcut::ResultsExist

METHODS
   distinct
	$foo_rs->distinct

	# equivalent to...
	$foo_rs->search(undef, { distinct => 1 });

   group_by
	$foo_rs->group_by([ qw/	some column names /])

	# equivalent to...
	$foo_rs->search(undef, { group_by => [ qw/ some	column names /]	});

   order_by
	$foo_rs->order_by({ -desc => 'col1' });

	# equivalent to...
	$foo_rs->search(undef, { order_by => { -desc =>	'col1' } });

       You can also specify the	order as a "magic string", e.g.:

	$foo_rs->order_by('!col1')	 # ->order_by({	-desc => 'col1'	})
	$foo_rs->order_by('col1,col2')	 # ->order_by([qw(col1 col2)])
	$foo_rs->order_by('col1,!col2')	 # ->order_by([{ -asc => 'col1'	}, { -desc => 'col2' }])
	$foo_rs->order_by(qw(col1 col2)) # ->order_by([qw(col1 col2)])

       Can mix it all up as well:

	$foo_rs->order_by(qw(col1 col2 col3), 'col4,!col5')

   hri
	$foo_rs->hri;

	# equivalent to...
	$foo_rs->search(undef, {
	   result_class	=> 'DBIx::Class::ResultClass::HashRefInflator'
	});

   rows
	$foo_rs->rows(10);

	# equivalent to...
	$foo_rs->search(undef, { rows => 10 })

   limit
       This is an alias	for "rows".

	 $foo_rs->limit(10);

	 # equivalent to...
	 $foo_rs->rows(10);

   has_rows
       A lighter way to	check the resultset contains any data rather than
       calling "$rs->count".

   page
	$foo_rs->page(2);

	# equivalent to...
	$foo_rs->search(undef, { page => 2 })

   limited_page
	$foo_rs->limited_page(2, 3);

	# equivalent to...
	$foo_rs->search(undef, { page => 2, rows => 3 })

   columns
	$foo_rs->columns([qw/ some column names	/]);

	# equivalent to...
	$foo_rs->search(undef, { columns => [qw/ some column names /] });

   add_columns
	$foo_rs->add_columns([qw/ some column names /]);

	# equivalent to...
	$foo_rs->search(undef, { '+columns' => [qw/ some column	names /] });

   remove_columns
	$foo_rs->remove_columns([qw/ some column names /]);

	# equivalent to...
	$foo_rs->search(undef, { remove_columns	=> [qw/	some column names /] });

   prefetch
	$foo_rs->prefetch('bar');

	# equivalent to...
	$foo_rs->search(undef, { prefetch => 'bar' });

   results_exist($cond?)
	my $results_exist = $schema->resultset('Bar')->search({...})->results_exist;

	# there	is no easily expressable equivalent, so	this is	not exactly a
	# shortcut. Nevertheless kept in this class for	historical reasons

       Uses "EXISTS" SQL function to check if the query	would return anything.
       Usually much less resource intensive the	more common "foo() if
       $rs->count" idiom.

       The optional $cond argument can be used like in "search()".

   results_exist_as_query($cond?)
	...->search(
	   {},
	   { '+columns'	=> {
	      subquery_has_members => $some_correlated_rs->results_exist_as_query
	   }},
	);

	# there	is no easily expressable equivalent, so	this is	not exactly a
	# shortcut. Nevertheless kept in this class for	historical reasons

       The query generator behind "results_exist". Can be used standalone in
       complex queries returning a boolean result within a larger query
       context.

   null(@columns || \@columns)
	$rs->null('status');
	$rs->null(['status', 'title']);

   not_null(@columns ||	\@columns)
	$rs->not_null('status');
	$rs->not_null(['status', 'title']);

   like($column	|| \@columns, $cond)
	$rs->like('lyrics', '%zebra%');
	$rs->like(['lyrics', 'title'], '%zebra%');

   not_like($column || \@columns, $cond)
	$rs->not_like('lyrics',	'%zebra%');
	$rs->not_like(['lyrics', 'title'], '%zebra%');

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

COPYRIGHT AND LICENSE
       This 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.

perl v5.32.0			  2DBIx::Class::Helper::ResultSet::Shortcut(3)

NAME | SYNOPSIS | DESCRIPTION | SEE ALSO | METHODS | 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::ResultSet::Shortcut&sektion=3&manpath=FreeBSD+12.1-RELEASE+and+Ports>

home | help