DBIx::Class::Helper::Row::SubClass3pm
Convenient subclassing with dbix::class
Usage
# define parent classpackage 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 subclasspackage 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 subclasspackage MySchema::Result::Bar;use DBIx::Class::Candy-base => 'ParentSchema::Result::Bar',-components => ['Helper::Row::SubClass'];subclass;
Overview
This component is to allow simple subclassing of DBIx::Class Result classes.
Methods
subclass
This is probably the method you want. You call this in your child class and it imports the definitions from the parent into itself.
generate_relationships
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".
set_table
This is a super basic method that just sets the current classes' table to the parent classes' table.
Candy exports
If used in conjunction with DBIx::Class::Candy this component will export:
- join_table
- subclass
- generate_relationships
- set_table
Note
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.
Copyright and license
This software is copyright (c) 2024 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.
Releases
7 releases since Debian 7 (Wheezy); the text changed 6 times.