NAME
DBIx::DataModel::Meta::Path - meta-information about a path
SYNOPSIS
# create the path; best called through $assoc->_install_path(...)
my
$path
= new (
name
=>
$role_name
,
from
=>
$source_meta_table
,
to
=>
$destination_meta_table
,
on
=> \
%condition
,
# in SQL::Abstract::More format
multiplicity
=> [
$min
,
$max
],
association
=>
$association
,
direction
=>
$direction
,
# either 'AB' or 'BA'
);
DESCRIPTION
This class is closely related to DBIx::DataModel::Meta::Association. A path corresponds to one possible database join between two tables.
PUBLIC METHODS
new
Constructor method. Normally this will be called indirectly through
$association
->_install_path(
%args
)
because the "_install_path" in DBIx::DataModel::Meta::Association method automatically adds its own invocant (the $association
) into %args
.
Named arguments to new()
are :
- name
-
The name of this path (must be unique within the source table). That name is used for defining a Perl method in the class associated to the source table, and for interpreting multi-steps joins in calls like
$schema
->
join
(
qw/FirstTable role1 role2 .../
)
- from
-
The DBIx::DataModel::Meta::Source::Table instance which is the source for this path.
- to
-
The DBIx::DataModel::Meta::Source::Table instance which is the target for this path.
- on
-
A hashref that describes the database join condition : the keys are names of columns for the left-hand side, and values are names of columns for the right-hand side. For example
on
=> {
foreign_1
=>
'primary_1'
,
foreign_2
=>
'primary_2'
}
will generate SQL clauses of shape
.. JOIN ON <left>.foreign_1 = <right>.primary_1
AND <left>.foreign_2 = <right>.primary_2
- multiplicity
-
An arrayref
[$min, $max]
; see explanations in DBIx::DataModel::Meta::Association. - association
-
The association to which this path belongs.
- direction
-
A string that describes the direction of this path within the association : must be either
'AB'
or'BA'
.
name
Name of this path
from
Source of this path (an instance of DBIx::DataModel::Meta::Source::Table).
to
Target of this path (an instance of DBIx::DataModel::Meta::Source::Table).
on
Copy of the hash for the join condition
multiplicity
Array ($min, $max)
describing the multiplicity.
association
Instance of DBIx::DataModel::Meta::Association to which this path belongs.
direction
Direction of the path within the association; a string containing either 'AB'
or 'BA'
.
opposite
Returns the path object representing the opposite direction.