NAME
DBIx::Lite::Schema
VERSION
version 0.11
OVERVIEW
This class holds the very loose schema definitions that enable some advanced features of DBIx::Lite. Note that you can do all main operations, including searches and manipulations, with no need to define any schema.
An empty DBIx::Lite::Schema is created every time you create a DBIx::Lite object. Then you can access it to customize it. Otherwise, you can prepare a Schema object and reutilize it across multiple connections:
my $schema = DBIx::Lite::Schema->new;
my $conn1 = DBIx::Lite->new(schema => $schema)->connect(...);
my $conn2 = DBIx::Lite->new(schema => $schema)->connect(...);
METHODS
new
The constructor takes no arguments.
table
This method accepts a table name and returs the DBIx::Lite::Schema::Table object corresponding to the requested table. You can then call methods on it.
$schema->table('books')->autopk('id');
one_to_many
This methods sets up a 1-to-N relationship between two tables. Just pass two table names to it, appending the relation key column name:
$schema->one_to_many('authors.id' => 'books.author_id');
This will have the following effects:
If you supply a third argument, it will be used to set up the reverse accessor method. For example:
$schema->one_to_many('authors.id' => 'books.author_id', 'author');
will install a author
accessor method in the books Result objects.
Note that relationships can be chained:
$dbix->schema->one_to_many('authors.id' => 'books.author_id');
$dbix->schema->one_to_many('books.id' => 'chapters.books_id');
my @chapters = $dbix
->table('authors')
->search({ country => 'IT' })
->books
->chapters
->search({ page_count => { '>' => 20 } })
->all;
You can use the same approach to traverse many-to-many relationships.
AUTHOR
Alessandro Ranellucci <aar@cpan.org>
COPYRIGHT AND LICENSE
This software is copyright (c) 2012 by Alessandro Ranellucci.
This is free software; you can redistribute it and/or modify it under the same terms as the Perl 5 programming language system itself.