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

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

\s-1DBI\s0 Data Source Name.

namespace

Namespace under which your table classes will be initialized.

password

Password.

options

Optional hashref to specify \s-1DBI\s0 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 \*(C`[email protected]\*(C'

AUTHOR EMERITUS

Sebastian Riedel, \*(C`[email protected]\*(C' \s-1IKEBE\s0 Tomohiro, \*(C`[email protected]\*(C'

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.

RELATED TO Class::DBI::Loader…

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