The Perl Toolchain Summit needs more sponsors. If your company depends on Perl, please support this very important event.

NAME

DBIx::Class::Schema::ResultSetAccessors - Short hand ResultSet Accessors

SYNOPSIS

  # in your schema class
  __PACKAGE__->load_components(qw/
      Schema::ResultSetAccessors
  /);
  __PACKAGE__->load_namespaces;

  # in your program
  use MyApp::Schema;
  my $schema = MyApp::Schema->connect(...);
  @artists = $schema->artists->all; # same as $schema->resultset('Artist')->all;

DESCRIPTION

Creates short hand accessor methods for each ResultSet. Accessor names are properly converted into lowercase and pluralized. E.g.

 LinerNote -> liner_notes
 Artist    -> artists
 CD        -> cds

METHODS

resultset_accessor_map

Sometimes you will not want to, or will not be able to use an auto-generated accessor name. A common case would be when the accessor name conflicts with a built in DBIx::Class::Schema method. E.g. if you name your Result class "Source", a pluralized version of this would be "sources", which is a built in method.

This method allows you to redefine the names as you wish. Overload this method in your schema class and return a hashref map of Source => accessor names. E.g.:

 # in your MyApp::Schema class
 sub resultset_accessor_map {
    {
        Source => 'my_sources',
        Artist => 'my_artists',
    }
 }

 # later in your code
 $schema->my_sources->all;

resultset_accessor_name($moniker)

This method is used to generate the accessor names. If you wish to create your own logic for generating the name, you can overload this method. The method takes a moniker (aka Source name) as a parameter and returns the accessor name.

Internally it simply uses String::CamelCase to decamelize the name and pass it to "pluralize_resultset_accessor_name" method.

pluralize_resultset_accessor_name($decamelized_name)

If you only wish to overload the pluralization of the accessor name, in case you want to add support for a language other than English, then you might only want to overload this method. The method accepts decamelized name (e.g. liner_note) and returns properly pluralized version of it.

SEE ALSO

DBIx::Class
String::CamelCase
Lingua::EN::Inflect::Phrase

AUTHOR

 Roman F.
 romanf@cpan.org

COPYRIGHT

Copyright (c) 2011 Roman F.

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

The full text of the license can be found in the LICENSE file included with this module.