NAME
DBIx::Class::Schema::Loader::RelBuilder - Builds relationships for DBIx::Class::Schema::Loader
SYNOPSIS
See DBIx::Class::Schema::Loader and DBIx::Class::Schema::Loader::Base.
DESCRIPTION
This class builds relationships for DBIx::Class::Schema::Loader. This is module is not (yet) for external use.
METHODS
new
Arguments: $loader object
generate_code
Arguments:
[
[ local_moniker1 (
scalar
), fk_info1 (arrayref), uniq_info1 (arrayref) ]
[ local_moniker2 (
scalar
), fk_info2 (arrayref), uniq_info2 (arrayref) ]
...
]
This generates the code for the relationships of each table.
local_moniker
is the moniker name of the table which had the REFERENCES statements. The fk_info arrayref's contents should take the form:
[
{
local_table
=>
'some_table'
,
local_moniker
=>
'SomeTable'
,
local_columns
=> [
'col2'
,
'col3'
],
remote_table
=>
'another_table_moniker'
,
remote_moniker
=>
'AnotherTableMoniker'
,
remote_columns
=> [
'col5'
,
'col7'
],
},
{
local_table
=>
'some_other_table'
,
local_moniker
=>
'SomeOtherTable'
,
local_columns
=> [
'col1'
,
'col4'
],
remote_table
=>
'yet_another_table_moniker'
,
remote_moniker
=>
'YetAnotherTableMoniker'
,
remote_columns
=> [
'col1'
,
'col2'
],
},
# ...
],
The uniq_info arrayref's contents should take the form:
[
[
uniq_constraint_name
=> [
'col1'
,
'col2'
],
],
[
another_uniq_constraint_name
=> [
'col1'
,
'col2'
],
],
],
This method will return the generated relationships as a hashref keyed on the class names. The values are arrayrefs of hashes containing method name and arguments, like so:
{
'Some::Source::Class'
=> [
{
method
=>
'belongs_to'
,
arguments
=> [
'col1'
,
'Another::Source::Class'
] },
{
method
=>
'has_many'
,
arguments
=> [
'anothers'
,
'Yet::Another::Source::Class'
,
'col15'
] },
],
'Another::Source::Class'
=> [
# ...
],
# ...
}
AUTHORS
See "AUTHORS" in DBIx::Class::Schema::Loader.
LICENSE
This library is free software; you can redistribute it and/or modify it under the same terms as Perl itself.