DBIx::Class::Helpers(3pm) User Contributed Perl Documentation DBIx::Class::Helpers(3pm)NAME
DBIx::Class::Helpers - Simplify the common case stuff for DBIx::Class.
VERSION
version 2.013002
SYNOPSIS
package MyApp::Schema::Result::Foo_Bar;
__PACKAGE__->load_components(qw{Helper::JoinTable Core});
__PACKAGE__->join_table({
left_class => 'Foo',
left_method => 'foo',
right_class => 'Bar',
right_method => 'bar',
});
# define parent class
package ParentSchema::Result::Bar;
use strict;
use warnings;
use parent 'DBIx::Class';
__PACKAGE__->load_components('Core');
__PACKAGE__->table('Bar');
__PACKAGE__->add_columns(qw/ id foo_id /);
__PACKAGE__->set_primary_key('id');
__PACKAGE__->belongs_to( foo => 'ParentSchema::Result::Foo', 'foo_id' );
# define subclass
package MySchema::Result::Bar;
use strict;
use warnings;
use parent 'ParentSchema::Result::Bar';
__PACKAGE__->load_components(qw{Helper::SubClass Core});
__PACKAGE__->subclass;
SEE ALSO
DBIx::Class::Helper::Row::JoinTable, DBIx::Class::Helper::ResultSet::SubClass, DBIx::Class::Helpers::Util
AUTHOR
Arthur Axel "fREW" Schmidt <frioux+cpan@gmail.com>
COPYRIGHT AND LICENSE
This software is copyright (c) 2012 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.
perl v5.14.2 2012-06-18 DBIx::Class::Helpers(3pm)
Check Out this Related Man Page
DBIx::Class::Helper::Row::JoinTable(3pm) User Contributed Perl Documentation DBIx::Class::Helper::Row::JoinTable(3pm)NAME
DBIx::Class::Helper::Row::JoinTable - Easily set up join tables with DBIx::Class
VERSION
version 2.013002
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) 2012 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.
perl v5.14.2 2012-06-18 DBIx::Class::Helper::Row::JoinTable(3pm)