DBIx::Class::Helper::Row::SubClass - Convenient subclassing with DBIx::Class
version 2.00000_2
# define parent class package ParentSchema::Result::Bar; use strict; use warnings; use parent 'DBIx::Class'; __PACKAGE__->load_components('Core'); __PACKAGE__->table('Bar'); __PACKAGE__->add_columns(qw/ id foo_id /); __PACKAGE__->set_primary_key('id'); __PACKAGE__->belongs_to( foo => 'ParentSchema::Result::Foo', 'foo_id' ); # define subclass package MySchema::Result::Bar; use strict; use warnings; use parent 'ParentSchema::Result::Bar'; __PACKAGE__->load_components(qw{Helper::SubClass Core}); __PACKAGE__->subclass;
This component is to allow simple subclassing of DBIx::Class Result classes.
This is probably the method you want. You call this in your child class and it imports the definitions from the parent into itself.
This is where the cool stuff happens. This assumes that the namespace is laid out in the recommended MyApp::Schema::Result::Foo format. If the parent has Parent::Schema::Result::Foo related to Parent::Schema::Result::Bar, and you inherit from Parent::Schema::Result::Foo in MyApp::Schema::Result::Foo, you will automatically get the relationship to MyApp::Schema::Result::Bar.
MyApp::Schema::Result::Foo
Parent::Schema::Result::Foo
Parent::Schema::Result::Bar
MyApp::Schema::Result::Bar
This is a super basic method that just sets the current classes' table to the parent classes' table.
This Component is mostly aimed at those who want to subclass parts of a schema, maybe for sharing a login system in a few different projects. Do not confuse it with DBIx::Class::DynamicSubclass, which solves an entirely different problem. DBIx::Class::DynamicSubclass is for when you want to store a few very similar classes in the same table (Employee, Person, Boss, etc) whereas this component is merely for reusing an existing schema.
Arthur Axel "fREW" Schmidt <frioux+cpan@gmail.com>
This software is copyright (c) 2009 by Arthur Axel "fREW" Schmidt.
This is free software; you can redistribute it and/or modify it under the same terms as the Perl 5 programming language system itself.
To install DBIx::Class::Helpers, copy and paste the appropriate command in to your terminal.
cpanm
cpanm DBIx::Class::Helpers
CPAN shell
perl -MCPAN -e shell install DBIx::Class::Helpers
For more information on module installation, please visit the detailed CPAN module installation guide.