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.