NAME¶
Class::DBI::Loader - Dynamic definition of Class::DBI sub classes.
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);
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.
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.
AUTHOR¶
Daisuke Maki "dmaki@cpan.org"
AUTHOR EMERITUS¶
Sebastian Riedel, "sri@oook.de" IKEBE Tomohiro,
"ikebe@edge.co.jp"
THANK YOU¶
Adam Anderson, Andy Grundman, Autrijus Tang, Dan Kubb, David Naughton, Randal
Schwartz, Simon Flack and all the others who've helped.
LICENSE¶
This library is free software; you can redistribute it and/or modify it under
the same terms as Perl itself.
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