7 use base qw/DBIx::Class::Componentised Class::Data::Accessor/;
9 sub mk_classdata { shift->mk_classaccessor(@_); }
10 sub component_base_class { 'DBIx::Class' }
12 # Always remember to do all digits for the version even if they're 0
13 # i.e. first release of 0.XX *must* be 0.XX000. This avoids fBSD ports
14 # brain damage and presumably various other packaging systems too
16 $VERSION = '0.05999_04';
18 sub MODIFY_CODE_ATTRIBUTES {
19 my ($class,$code,@attrs) = @_;
20 unless ($class->can('__attr_cache')) {
21 $class->mk_classdata('__attr_cache');
22 $class->__attr_cache({});
24 $class->__attr_cache->{$code} = [@attrs];
30 my $cache = $self->can('__attr_cache') ? $self->__attr_cache : {};
31 my $rest = eval { $self->next::method };
32 return $@ ? $cache : { %$cache, %$rest };
39 DBIx::Class - Extensible and flexible object <-> relational mapper.
45 This is an SQL to OO mapper, inspired by the L<Class::DBI> framework,
46 and meant to support compability with it, while restructuring the
47 internals and making it possible to support some new features like
48 self-joins, distinct, group bys and more.
50 This project is still at an early stage, so the maintainers don't make
51 any absolute promise that full backwards-compatibility will be supported;
52 however, if we can without compromising the improvements we're trying to
53 make, we will, and any non-compatible changes will merit a full justification
54 on the mailing list and a CPAN developer release for people to test against.
56 The community can be found via -
58 Mailing list: http://lists.rawmode.org/mailman/listinfo/dbix-class/
60 SVN: http://dev.catalyst.perl.org/repos/bast/trunk/DBIx-Class/
62 Wiki: http://dbix-class.shadowcatsystems.co.uk/
64 IRC: irc.perl.org#dbix-class
68 If you're using L<Class::DBI>, and want an easy and fast way of migrating to
69 DBIx::Class, take a look at L<DBIx::Class::CDBICompat>.
71 There are two ways of using DBIx::Class, the "simple" way and the "schema" way.
72 The "simple" way of using DBIx::Class needs less classes than the "schema"
73 way but doesn't give you the ability to easily use different database connections.
75 Some examples where different database connections are useful are:
77 different users with different rights
78 different databases with the same schema.
82 First you need to create a base class which all other classes will inherit from.
83 See L<DBIx::Class::DB> for information on how to do this.
85 Then you need to create a class for every table you want to use with DBIx::Class.
86 See L<DBIx::Class::Table> for information on how to do this.
90 With this approach, the table classes inherit directly from DBIx::Class::Core,
91 although it might be a good idea to create a "parent" class for all table
92 classes that inherits from DBIx::Class::Core and adds additional methods
93 needed by all table classes, e.g. reading a config file or loading auto primary
96 Look at L<DBIx::Class::Schema> for information on how to do this.
98 If you need more help, check out the introduction in the
105 =item L<DBIx::Class::Core> - DBIC Core Classes
107 =item L<DBIx::Class::Manual> - User's manual
109 =item L<DBIx::Class::CDBICompat> - L<Class::DBI> Compat layer
111 =item L<DBIx::Class::Schema>
113 =item L<DBIx::Class::ResultSet>
115 =item L<DBIx::Class::ResultSource>
117 =item L<DBIx::Class::Row> - row-level methods
119 =item L<DBIx::Class::PK> - primary key methods
121 =item L<DBIx::Class::Relationship> - relationships between tables
127 Matt S. Trout <mst@shadowcatsystems.co.uk>
131 Andy Grundman <andy@hybridized.org>
133 Brian Cassidy <bricas@cpan.org>
135 Dan Kubb <dan.kubb-cpan@onautopilot.com>
137 Dan Sully <daniel@cpan.org>
139 David Kamholz <dkamholz@cpan.org>
143 Marcus Ramberg <mramberg@cpan.org>
157 Daniel Westermann-Clark <danieltwc@cpan.org>
159 Alexander Hartmaier <alex_hartmaier@hotmail.com>
163 Nigel Metheringham <nigelm@cpan.org>
171 Scotty Allen <scotty@scottyallen.com>
175 Robert Sedlacek <phaylon@dunkelheit.at>
177 Justin Guenther <jguenther@agr.gc.ca>
179 Daisuke Murase <typester@cpan.org>
181 Scott McWhirter (konobi)
185 You may distribute this code under the same terms as Perl itself.