DBIx::Class::Helper::ResultSet::Shortcut(3) 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.

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 /] });

prefetch

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

results_exist

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

Uses "EXISTS" SQL function to check if the query would return anything. Possibly lighter weight than the much more common "foo() if $rs->count" idiom.

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 <[email protected]>

COPYRIGHT AND LICENSE

This software is copyright (c) 2015 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.