.\" Automatically generated by Pod::Man 4.14 (Pod::Simple 3.43) .\" .\" Standard preamble: .\" ======================================================================== .de Sp \" Vertical space (when we can't use .PP) .if t .sp .5v .if n .sp .. .de Vb \" Begin verbatim text .ft CW .nf .ne \\$1 .. .de Ve \" End verbatim text .ft R .fi .. .\" Set up some character translations and predefined strings. \*(-- will .\" give an unbreakable dash, \*(PI will give pi, \*(L" will give a left .\" double quote, and \*(R" will give a right double quote. \*(C+ will .\" give a nicer C++. Capital omega is used to do unbreakable dashes and .\" therefore won't be available. \*(C` and \*(C' expand to `' in nroff, .\" nothing in troff, for use with C<>. .tr \(*W- .ds C+ C\v'-.1v'\h'-1p'\s-2+\h'-1p'+\s0\v'.1v'\h'-1p' .ie n \{\ . ds -- \(*W- . ds PI pi . if (\n(.H=4u)&(1m=24u) .ds -- \(*W\h'-12u'\(*W\h'-12u'-\" diablo 10 pitch . if (\n(.H=4u)&(1m=20u) .ds -- \(*W\h'-12u'\(*W\h'-8u'-\" diablo 12 pitch . ds L" "" . ds R" "" . ds C` "" . ds C' "" 'br\} .el\{\ . ds -- \|\(em\| . ds PI \(*p . ds L" `` . ds R" '' . ds C` . ds C' 'br\} .\" .\" Escape single quotes in literal strings from groff's Unicode transform. .ie \n(.g .ds Aq \(aq .el .ds Aq ' .\" .\" If the F register is >0, we'll generate index entries on stderr for .\" titles (.TH), headers (.SH), subsections (.SS), items (.Ip), and index .\" entries marked with X<> in POD. Of course, you'll have to process the .\" output yourself in some meaningful fashion. .\" .\" Avoid warning from groff about undefined register 'F'. .de IX .. .nr rF 0 .if \n(.g .if rF .nr rF 1 .if (\n(rF:(\n(.g==0)) \{\ . if \nF \{\ . de IX . tm Index:\\$1\t\\n%\t"\\$2" .. . if !\nF==2 \{\ . nr % 0 . nr F 2 . \} . \} .\} .rr rF .\" ======================================================================== .\" .IX Title "DBIx::Class::Helper::Row::SubClass 3pm" .TH DBIx::Class::Helper::Row::SubClass 3pm "2022-12-06" "perl v5.36.0" "User Contributed Perl Documentation" .\" For nroff, turn off justification. Always turn off hyphenation; it makes .\" way too many mistakes in technical documents. .if n .ad l .nh .SH "NAME" DBIx::Class::Helper::Row::SubClass \- Convenient subclassing with DBIx::Class .SH "SYNOPSIS" .IX Header "SYNOPSIS" .Vb 2 \& # define parent class \& package ParentSchema::Result::Bar; \& \& use strict; \& use warnings; \& \& use parent \*(AqDBIx::Class\*(Aq; \& \& _\|_PACKAGE_\|_\->load_components(\*(AqCore\*(Aq); \& \& _\|_PACKAGE_\|_\->table(\*(AqBar\*(Aq); \& \& _\|_PACKAGE_\|_\->add_columns(qw/ id foo_id /); \& \& _\|_PACKAGE_\|_\->set_primary_key(\*(Aqid\*(Aq); \& \& _\|_PACKAGE_\|_\->belongs_to( foo => \*(AqParentSchema::Result::Foo\*(Aq, \*(Aqfoo_id\*(Aq ); \& \& # define subclass \& package MySchema::Result::Bar; \& \& use strict; \& use warnings; \& \& use parent \*(AqParentSchema::Result::Bar\*(Aq; \& \& _\|_PACKAGE_\|_\->load_components(qw{Helper::Row::SubClass Core}); \& \& _\|_PACKAGE_\|_\->subclass; .Ve .PP or with DBIx::Class::Candy: .PP .Vb 2 \& # define subclass \& package MySchema::Result::Bar; \& \& use DBIx::Class::Candy \& \-base => \*(AqParentSchema::Result::Bar\*(Aq, \& \-components => [\*(AqHelper::Row::SubClass\*(Aq]; \& \& subclass; .Ve .SH "DESCRIPTION" .IX Header "DESCRIPTION" This component is to allow simple subclassing of DBIx::Class Result classes. .SH "METHODS" .IX Header "METHODS" .SS "subclass" .IX Subsection "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. .SS "generate_relationships" .IX Subsection "generate_relationships" This is where the cool stuff happens. This assumes that the namespace is laid out in the recommended \f(CW\*(C`MyApp::Schema::Result::Foo\*(C'\fR format. If the parent has \&\f(CW\*(C`Parent::Schema::Result::Foo\*(C'\fR related to \f(CW\*(C`Parent::Schema::Result::Bar\*(C'\fR, and you inherit from \f(CW\*(C`Parent::Schema::Result::Foo\*(C'\fR in \f(CW\*(C`MyApp::Schema::Result::Foo\*(C'\fR, you will automatically get the relationship to \f(CW\*(C`MyApp::Schema::Result::Bar\*(C'\fR. .SS "set_table" .IX Subsection "set_table" This is a super basic method that just sets the current classes' table to the parent classes' table. .SH "CANDY EXPORTS" .IX Header "CANDY EXPORTS" If used in conjunction with DBIx::Class::Candy this component will export: .IP "join_table" 4 .IX Item "join_table" .PD 0 .IP "subclass" 4 .IX Item "subclass" .IP "generate_relationships" 4 .IX Item "generate_relationships" .IP "set_table" 4 .IX Item "set_table" .PD .SH "NOTE" .IX Header "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. .SH "AUTHOR" .IX Header "AUTHOR" Arthur Axel \*(L"fREW\*(R" Schmidt .SH "COPYRIGHT AND LICENSE" .IX Header "COPYRIGHT AND LICENSE" This software is copyright (c) 2020 by Arthur Axel \*(L"fREW\*(R" Schmidt. .PP This is free software; you can redistribute it and/or modify it under the same terms as the Perl 5 programming language system itself.