DBIx::Class::Helper::Row::SubClass - Convenient subclassing with DBIx::Class
# 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::Row::SubClass Core});
__PACKAGE__->subclass;
or with DBIx::Class::Candy:
# define subclass
package MySchema::Result::Bar;
use DBIx::Class::Candy
-base => 'ParentSchema::Result::Bar',
-components => ['Helper::Row::SubClass'];
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".
This is a super basic method that just sets the current classes' table to the
parent classes' table.
If used in conjunction with DBIx::Class::Candy this component will export:
- join_table
- subclass
- generate_relationships
- set_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) 2020 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.