---
name: "DBIx::Class::Helper::Row::SubClass"
section: "3pm"
platform: "linux"
package: "libdbix-class-helpers-perl"
version: "2.037000-1"
release: "Debian 13 (Trixie)"
platforms: ["linux"]
url: "https://new.carta.tech/DBIx::Class::Helper::Row::SubClass"
---

# DBIx::Class::Helper::Row::SubClass(3pm)

Convenient subclassing with DBIx::Class

## NAME

DBIx::Class::Helper::Row::SubClass - Convenient subclassing with DBIx::Class

## SYNOPSIS

```
 # 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;
```

## DESCRIPTION

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.

## AUTHOR

Arthur Axel "fREW" Schmidt \<frioux+cpan@gmail.com\>

## 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.
