---
name: "DBIx::Class::Schema::Loader::RelBuilder"
section: "3pm"
platform: "linux"
package: "libdbix-class-schema-loader-perl"
version: "0.07053-1"
release: "Debian 13 (Trixie)"
platforms: ["linux"]
url: "https://new.carta.tech/DBIx::Class::Schema::Loader::RelBuilder"
---

# DBIx::Class::Schema::Loader::RelBuilder(3pm)

Builds relationships for DBIx::Class::Schema::Loader

## 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.
