GSP
Quick Navigator

Search Site

Unix VPS
A - Starter
B - Basic
C - Preferred
D - Commercial
MPS - Dedicated
Previous VPSs
* Sign Up! *

Support
Contact Us
Online Help
Handbooks
Domain Status
Man Pages

FAQ
Virtual Servers
Pricing
Billing
Technical

Network
Facilities
Connectivity
Topology Map

Miscellaneous
Server Agreement
Year 2038
Credits
 

USA Flag

 

 

Man Pages


Manual Reference Pages  -  DBIX::CLASS::HELPER::ROW::JOINTABLE (3)

.ds Aq ’

NAME

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

CONTENTS

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 tables 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.

Search for    or go to Top of page |  Section 3 |  Main Index


perl v5.20.3 DBIX::CLASS::HELPER::ROW::JOINTABLE (3) 2015-11-07

Powered by GSP Visit the GSP FreeBSD Man Page Interface.
Output converted with manServer 1.07.