Provided by: libdbix-class-helpers-perl_2.032000-1_all bug

NAME

       DBIx::Class::Helper::Row::JoinTable - Easily set up join tables with DBIx::Class

SYNOPSIS

        package MyApp::Schema::Result::Foo_Bar;

        __PACKAGE__->load_components(qw{Helper::Row::JoinTable Core});

        __PACKAGE__->join_table({
           left_class   => 'Foo',
           left_method  => 'foo',
           right_class  => 'Bar',
           right_method => 'bar',
        });

        # the above is the same as:

        __PACKAGE__->table('Foo_Bar');
        __PACKAGE__->add_columns(
           foo_id => {
              data_type         => 'integer',
              is_nullable       => 0,
              is_numeric        => 1,
           },
           bar_id => {
              data_type         => 'integer',
              is_nullable       => 0,
              is_numeric        => 1,
           },
        );

        $self->set_primary_key(qw{foo_id bar_id});

        __PACKAGE__->belongs_to( foo => 'MyApp::Schema::Result::Foo' 'foo_id');
        __PACKAGE__->belongs_to( bar => 'MyApp::Schema::Result::Bar' 'bar_id');

       or with DBIx::Class::Candy:

        package MyApp::Schema::Result::Foo_Bar;

        use DBIx::Class::Candy -components => ['Helper::Row::JoinTable'];

        join_table {
           left_class   => 'Foo',
           left_method  => 'foo',
           right_class  => 'Bar',
           right_method => 'bar',
        };

METHODS

       All the methods take a configuration hashref that looks like the following:

        {
           left_class          => 'Foo',
           left_method         => 'foo',     # see NOTE
           left_method_plural  => 'foos',    # see NOTE, not required, used for
                                             # many_to_many rel name in right_class
                                             # which is not generated by default
           right_class         => 'Bar',
           right_method        => 'bar',     # see NOTE
           right_method_plural => 'bars',    # see NOTE, not required, used for
                                             # many_to_many rel name in left_class
                                             # which is not generated by default
           namespace           => 'MyApp',   # default is guessed via *::Foo
           self_method         => 'foobars', # not required, used for setting the name of the
                                             # join table's relationship in a has_many
                                             # which is not generated by default
        }

   join_table
       This is the method that you probably want.  It will set your table, add columns, set the
       primary key, and set up the relationships.

   add_join_columns
       Adds two non-nullable integer fields named "${left_method}_id" and "${right_method}_id"
       respectively.

   generate_has_manys
       Installs methods into "left_class" and "right_class" to get to the join table.  The
       methods will be named what's passed into the configuration hashref as "self_method".

   generate_many_to_manys
       Installs many_to_many methods into "left_class" and "right_class".  The methods will be
       named what's passed into the configuration hashref as "left_method_plural" for the
       "right_class" and "right_method_plural" for the "left_class".

   generate_primary_key
       Sets "${left_method}_id" and "${right_method}_id" to be the primary key.

   generate_relationships
       This adds relationships to "${namespace}::Schema::Result::$left_class" and
       "${namespace}::Schema::Result::$left_class" respectively.

   set_table
       This method sets the table to "${left_class}_${right_class}".

CANDY EXPORTS

       If used in conjunction with DBIx::Class::Candy this component will export:

       join_table
       generate_primary_key
       generate_has_manys
       generate_many_to_manys
       generate_relationships
       set_table
       add_join_columns

   NOTE
       This module uses String::CamelCase to default the method names and uses
       Lingua::EN::Inflect for pluralization.

CHANGES BETWEEN RELEASES

   Changes since 0.*
       Originally this module would use

              data_type         => 'integer',
              is_nullable       => 0,
              is_numeric        => 1,

       for all joining columns.  It now infers "data_type", "is_nullable", "is_numeric", and
       "extra" from the foreign tables.

AUTHOR

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

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.