NAME

DBIx::Class::Schema::Loader::Base - Base DBIx::Class::Schema::Loader Implementation.

SYNOPSIS

See DBIx::Class::Schema::Loader

DESCRIPTION

This is the base class for the vendor-specific DBIx::Class::Schema::* classes, and implements the common functionality between them.

OPTIONS

Available constructor options are:

additional_base_classes

List of additional base classes your table classes will use.

left_base_classes

List of additional base classes, that need to be leftmost.

additional_classes

List of additional classes which your table classes will use.

components

List of additional components to be loaded into your table classes. A good example would be ResultSetManager.

resultset_components

List of additional resultset components to be loaded into your table classes. A good example would be AlwaysRS. Component ResultSetManager will be automatically added to the above components list if this option is set.

constraint

Only load tables matching regex. Best specified as a qr// regex.

exclude

Exclude tables matching regex. Best specified as a qr// regex.

debug

Enable debug messages.

relationships

Try to automatically detect/setup has_a and has_many relationships.

moniker_map

Overrides the default tablename -> moniker translation. Can be either a hashref of table => moniker names, or a coderef for a translator function taking a single scalar table name argument and returning a scalar moniker. If the hash entry does not exist, or the function returns a false/undef value, the code falls back to default behavior for that table name.

inflect_plural

Just like "moniker_map" above, but for pluralizing relationship names.

inflect_singular

Just like "moniker_map" above, but for singularizing relationship names.

inflect_map

Deprecated. Equivalent to "inflect_plural".

inflect

Deprecated. Equivalent to "inflect_plural".

connect_info

DEPRECATED, just use __PACKAGE__-connection()> instead, like you would with any other DBIx::Class::Schema (see those docs for details). Similarly, if you wish to use a non-default storage_type, use __PACKAGE__-storage_type()>.

dsn

DEPRECATED, see above...

user

DEPRECATED, see above...

password

DEPRECATED, see above...

options

DEPRECATED, see above...

METHODS

new

Constructor for DBIx::Class::Schema::Loader::Base, used internally by DBIx::Class::Schema::Loader.

load

Does the actual schema-construction work, used internally by DBIx::Class::Schema::Loader right after object construction.

tables

Returns a sorted list of loaded tables, using the original database table names.

my @tables = $schema->loader->tables;

monikers

Returns a hashref of loaded table-to-moniker mappings. There will be two entries for each table, the original name and the "normalized" name, in the case that the two are different (such as databases that like uppercase table names, or preserve your original mixed-case definitions, or what-have-you).

my $monikers = $schema->loader->monikers;
my $foo_tbl_moniker = $monikers->{foo_tbl};
# -or-
my $foo_tbl_moniker = $schema->loader->monikers->{foo_tbl};
# $foo_tbl_moniker would look like "FooTbl"

classes

Returns a hashref of table-to-classname mappings. In some cases it will contain multiple entries per table for the original and normalized table names, as above in #monikers.

You probably shouldn't be using this for any normal or simple usage of your Schema. The usual way to run queries on your tables is via $schema->resultset('FooTbl'), where FooTbl is a moniker as returned by monikers above.

my $classes = $schema->loader->classes;
my $foo_tbl_class = $classes->{foo_tbl};
# -or-
my $foo_tbl_class = $schema->loader->classes->{foo_tbl};
# $foo_tbl_class would look like "My::Schema::FooTbl",
#   assuming the schema class is "My::Schema"

SEE ALSO

DBIx::Class::Schema::Loader