DBIx::Class::Helper::Row::JoinTable - Easily set up join tables with DBIx::Class
version 2.003000
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');
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 }
This is the method that you probably want. It will set your table, add columns, set the primary key, and set up the relationships.
Adds two non-nullable integer fields named "${left_method}_id" and "${right_method}_id" respectively.
"${left_method}_id"
"${right_method}_id"
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.
left_class
right_class
self_method
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.
left_method_plural
right_method_plural
Sets "${left_method}_id" and "${right_method}_id" to be the primary key.
This adds relationships to "${namespace}::Schema::Result::$left_class" and "${namespace}::Schema::Result::$left_class" respectively.
"${namespace}::Schema::Result::$left_class"
This method sets the table to "${left_class}_${right_class}".
This module uses String::CamelCase to default the method names and uses Lingua::EN::Inflect for pluralization.
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.
data_type
is_nullable
is_numeric
extra
Arthur Axel "fREW" Schmidt <frioux+cpan@gmail.com>
This software is copyright (c) 2010 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.
To install DBIx::Class::Helpers, copy and paste the appropriate command in to your terminal.
cpanm
cpanm DBIx::Class::Helpers
CPAN shell
perl -MCPAN -e shell install DBIx::Class::Helpers
For more information on module installation, please visit the detailed CPAN module installation guide.