DBIx::Class::Relationship::Base - Inter-table relationships
This class handles relationships between the tables in your database model. It allows your to set up relationships, and to perform joins on searches.
__PACKAGE__->add_relationship('relname', 'Foreign::Class', $cond, $attrs);
The condition needs to be an SQL::Abstract-style representation of the join between the tables. For example, if you're creating a rel from Foo to Bar,
{ 'foreign.foo_id' => 'self.id' }
will result in the JOIN clause
foo me JOIN bar bar ON bar.foo_id = me.id
You can specify as many foreign => self mappings as necessary.
Valid attributes are as follows:
Explicitly specifies the type of join to use in the relationship. Any SQL join type is valid, e.g. LEFT or RIGHT. It will be placed in the SQL command immediately before JOIN.
LEFT
RIGHT
JOIN
An arrayref containing a list of accessors in the foreign class to proxy in the main class. If, for example, you do the following:
__PACKAGE__->might_have(bar => 'Bar', undef, { proxy => [ qw/margle/ ] });
Then, assuming Bar has an accessor named margle, you can do:
my $obj = Foo->find(1); $obj->margle(10); # set margle; Bar object is created if it doesn't exist
Specifies the type of accessor that should be created for the relationship. Valid values are single (for when there is only a single related object), multi (when there can be many), and filter (for when there is a single related object, but you also want the relationship accessor to double as a column accessor). For multi accessors, an add_to_* method is also created, which calls create_related for the relationship.
single
multi
filter
create_related
Registers a relationship on the class
My::Table->search_related('relname', $cond, $attrs);
$obj->count_related('relname', $cond, $attrs);
My::Table->create_related('relname', \%col_data);
My::Table->new_related('relname', \%col_data);
My::Table->find_related('relname', @pri_vals | \%pri_vals);
My::Table->find_or_create_related('relname', \%col_data);
My::Table->set_from_related('relname', $rel_obj);
My::Table->update_from_related('relname', $rel_obj);
My::Table->delete_related('relname', $cond, $attrs);
Matt S. Trout <mst@shadowcatsystems.co.uk>
You may distribute this code under the same terms as Perl itself.
To install DBIx::Class, copy and paste the appropriate command in to your terminal.
cpanm
cpanm DBIx::Class
CPAN shell
perl -MCPAN -e shell install DBIx::Class
For more information on module installation, please visit the detailed CPAN module installation guide.