2 Catalyst::Model::DBIC::Schema - DBIx::Class::Schema Model Class
5 package MyApp::Model::Foo;
7 use base 'Catalyst::Model::DBIC::Schema';
10 schema_class => 'Foo::SchemaClass',
11 connect_info => [ 'dbi:Pg:dbname=foodb',
22 # ->schema To access schema methods:
23 $c->model('Foo')->schema->source(...);
25 # certain ->schema methods (source, resultset, class) have shortcuts
26 $c->model('Foo')->source(...);
27 $c->model('Foo')->resultset(...);
28 $c->model('Foo')->class(...);
30 # For resultsets, there's an even quicker shortcut:
32 # is the same as $c->model('Foo')->resultset('Bar')
34 # To get the composed schema for making new connections:
35 my $newconn = $c->model('Foo')->composed_schema->connect(...);
37 # Or the same thing via a convenience shortcut:
38 my $newconn = $c->model('Foo')->connect(...);
40 # or, if your schema works on different storage drivers:
41 my $newconn = $c->model('Foo')->composed_schema->clone();
42 $newconn->storage_type('::LDAP');
43 $newconn->connection(...);
45 # and again, a convenience shortcut
46 my $newconn = $c->model('Foo')->clone();
47 $newconn->storage_type('::LDAP');
48 $newconn->connection(...);
51 NOTE: This is the first public release, there's probably a higher than
52 average chance of random bugs and shortcomings: you've been warned.
54 This is a Catalyst Model for DBIx::Class::Schema-based Models. See the
55 documentation for Catalyst::Helper::Model::DBIC::Schema and
56 Catalyst::Helper::Model::DBIC::SchemaLoader for information on
57 generating these Models via Helper scripts. The latter of the two will
58 also generated a DBIx::Class::Schema::Loader-based Schema class for you.
62 This is the classname of your DBIx::Class::Schema Schema. It needs
63 to be findable in @INC, but it does not need to be underneath
64 "Catalyst::Model::". This parameter is required.
67 This is an arrayref of connection parameters, which are specific to
68 your "storage_type". For "::DBI", which is the only supported
69 "storage_type" in DBIx::Class at the time of this writing, the 4
70 parameters are your dsn, username, password, and connect options
73 This is not required if "schema_class" already has connection
74 information defined in itself (which would be the case for a Schema
75 defined by DBIx::Class::Schema::Loader, for instance).
78 Allows the use of a different "storage_type" than what is set in
79 your "schema_class" (which in turn defaults to "::DBI" if not set in
80 current DBIx::Class). Completely optional, and probably unnecessary
81 for most people until other storage backends become available for
85 new Instantiates the Model based on the above-documented ->config
86 parameters. The only required parameter is "schema_class".
87 "connect_info" is required in the case that "schema_class" does not
88 already have connection information defined for it.
91 Accessor which returns the connected schema being used by the this
92 model. There are already direct shortcuts on the model class itself
93 for schema->resultset, schema->source, and schema->class.
96 Accessor which returns the composed schema, which has no connection
97 info, which was used in constructing the "schema" above. Useful for
98 creating new connections based on the same schema/model. There are
99 direct shortcuts from the model object for composed_schema->clone
100 and composed_schema->connect
103 Shortcut for ->composed_schema->clone
106 Shortcut for ->composed_schema->connect
109 Shortcut for ->schema->source
112 Shortcut for ->schema->class
115 Shortcut for ->schema->resultset
118 Provides an accessor for the connected schema's storage object. Used
119 often for debugging and controlling transactions.
122 General Catalyst Stuff:
124 Catalyst::Manual, Catalyst::Test, Catalyst::Request, Catalyst::Response,
125 Catalyst::Helper, Catalyst,
127 Stuff related to DBIC and this Model style:
129 DBIx::Class, DBIx::Class::Schema, DBIx::Class::Schema::Loader,
130 Catalyst::Helper::Model::DBIC::Schema,
131 Catalyst::Helper::Model::DBIC::SchemaLoader
134 Brandon L Black, "blblack@gmail.com"
137 This program is free software, you can redistribute it and/or modify it
138 under the same terms as Perl itself.