From: Jess Robinson Date: Tue, 21 Mar 2006 22:47:30 +0000 (+0000) Subject: Nuked X-Git-Url: http://git.shadowcat.co.uk/gitweb/gitweb.cgi?a=commitdiff_plain;h=cddf2c632219902fca385b7fb4e307de2fd3ec36;p=dbsrgits%2FDBIx-Class-Historic.git Nuked --- diff --git a/lib/DBIx/Class/Manual/SchemaIntro.pod b/lib/DBIx/Class/Manual/SchemaIntro.pod deleted file mode 100644 index b1275eb..0000000 --- a/lib/DBIx/Class/Manual/SchemaIntro.pod +++ /dev/null @@ -1,250 +0,0 @@ -=head1 NAME - -DBIx::Class::Manual::SchemaIntro - Introduction to DBIx::Class::Schema - -=head1 INTRODUCTION - -This document describes how to set up DBIx::Class using the recommended -schema-based approach. - -=head2 Setup - -First, you should create your base schema class, which inherits from -L: - - package My::Schema; - use base qw/DBIx::Class::Schema/; - -In this class you load your result_source ("table", "model") classes, which -we will define later, using the load_classes() method. You can specify which -classes to load manually: - - # load My::Schema::Album and My::Schema::Artist - __PACKAGE__->load_classes(qw/ Album Artist /); - -Or load classes by namespace: - - # load My::Schema::Album, My::Schema::Artist and My::OtherSchema::LinerNotes - __PACKAGE__->load_classes( - { - 'My::Schema' => [qw/ Album Artist /], - 'My::OtherSchema' => [qw/ LinerNotes /] - } - ); - -Or let your schema class load all classes in its namespace automatically: - - # load My::Schema::* - __PACKAGE__->load_classes(); - -Next, create each of the classes you want to load as specified above: - - package My::Schema::Album; - use base qw/DBIx::Class/; - -Load any components required by each class with the load_components() method. -This should consist of "Core" plus any additional components you want to use. -For example, if you want serial/auto-incrementing primary keys: - - __PACKAGE__->load_components(qw/ PK::Auto Core /); - -C classes exist for many databases; see -L for more information. - -Set the table for your class: - - __PACKAGE__->table('album'); - -Add columns to your class: - - __PACKAGE__->add_columns(qw/ albumid artist title /); - -Accessors are created for each column automatically, so My::Schema::Album will -have albumid(), artist() and title() methods. - -Define a primary key for your class: - - __PACKAGE__->set_primary_key('albumid'); - -If you have a multi-column primary key, just pass a list instead: - - __PACKAGE__->set_primary_key( qw/ albumid artistid / ); - -=begin hide - -You can define relationships for any of your classes. L will -automatically fill in the correct namespace, so if you want to say -"a My::Schema::Album object belongs to a My::Schema::Artist object" you do not -need to include the namespace when declaring the relationship: - - __PACKAGE__->belongs_to('artist' => 'Artist'); - -=end hide - -That's all you need in terms of setup. - -=head2 Usage - -In your application code, you should first create a connected schema object: - - my $schema = My::Schema->connect( $dsn, $user, $password, $attrs ); - -You can create as many different schema instances as you need. So if you have -a second database you want to access: - - my $other_schema = My::Schema->connect( $dsn, $user, $password, $attrs ); - -Note that L does not cache connnections for you. If you -use multiple connections, you need to do this manually. - -To execute some sql statements on every connect you can pass them to your schema after the connect: - - $schema->storage->on_connect_do(\@on_connect_sql_statments); - -The simplest way to get a record is by primary key: - - my $schema = My::Schema->connect( ... ); - my $album = $schema->resultset('Album')->find(14); - -This will run a C