Class::DBI::Loader - Dynamic definition of Class::DBI sub classes.
Contents
Description
Class::DBI::Loader automate the definition of Class::DBI sub-classes. scan table schemas and setup
columns, primary key.
class names are defined by table names and namespace option.
+-----------+-----------+-----------+
| table | namespace | class |
+-----------+-----------+-----------+
| foo | Data | Data::Foo |
| foo_bar | | FooBar |
+-----------+-----------+-----------+
Class::DBI::Loader supports MySQL, Postgres and SQLite.
See Class::DBI::Loader::Generic.
License
This library is free software; you can redistribute it and/or modify it under the same terms as Perl
itself.
Methods
new%args
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, for example Class::DBI::Sweet (former
Catalyst::Model::CDBI::Sweet).
additional_classes
List of additional classes which your table classes will use.
constraint
Only load tables matching regex.
exclude
Exclude tables matching regex.
debug
Enable debug messages.
dsn DBI Data Source Name.
namespace
Namespace under which your table classes will be initialized.
password
Password.
options
Optional hashref to specify DBI connect options
relationships
Try to automatically detect/setup has_a and has_many relationships.
inflect
An hashref, which contains exceptions to Lingua::EN::Inflect::PL(). Useful for foreign language
column names.
user
Username.
require
Attempt to require the dynamically defined module, so that extensions defined in files. By default
errors from imported modules are suppressed. When you want to debug, use require_warn.
require_warn
Warn of import errors when requiring modules.
Name
Class::DBI::Loader - Dynamic definition of Class::DBI sub classes.
See Also
Class::DBI, Class::DBI::mysql, Class::DBI::Pg, Class::DBI::SQLite, Class::DBI::Loader::Generic,
Class::DBI::Loader::mysql, Class::DBI::Loader::Pg, Class::DBI::Loader::SQLite
perl v5.36.0 2022-12-07 Class::DBI::Loader(3pm)
Synopsis
use Class::DBI::Loader;
my $loader = Class::DBI::Loader->new(
dsn => "dbi:mysql:dbname",
user => "root",
password => "",
options => { RaiseError => 1, AutoCommit => 0 },
namespace => "Data",
additional_classes => qw/Class::DBI::AbstractSearch/, # or arrayref
additional_base_classes => qw/My::Stuff/, # or arrayref
left_base_classes => qw/Class::DBI::Sweet/, # or arrayref
constraint => '^foo.*',
relationships => 1,
options => { AutoCommit => 1 },
inflect => { child => 'children' },
require => 1
);
my $class = $loader->find_class('film'); # $class => Data::Film
my $obj = $class->retrieve(1);
use with mod_perl
in your startup.pl
# load all tables
use Class::DBI::Loader;
my $loader = Class::DBI::Loader->new(
dsn => "dbi:mysql:dbname",
user => "root",
password => "",
namespace => "Data",
);
in your web application.
use strict;
# you can use Data::Film directly
my $film = Data::Film->retrieve($id);
Thank You
Adam Anderson, Andy Grundman, Autrijus Tang, Dan Kubb, David Naughton, Randal Schwartz, Simon Flack and
all the others who've helped.
