For example package MyComponent; use 5.012;
sub add_columns { my ($class, @cols) = @_; return $class->next::method(@cols, 'additional', 'cols'); } Relationships are more complicated. As far as i remember you can't add it from inside "add_columns". However you could call some method in every RS when your app finishing initialization and add relationship from there foreach my $rsname (qw/User UserExtra SocialAction SocialPayment/) { my $source = $general_schema_class->source($rsname) or next; $source->result_class->finalize_schema($source) if $source->result_class->can('finalize_schema'); } .... package MyComponent; sub finalize_schema { my ($class, $source) = @_; $_->add_relationship('payments', $source->schema->source('SocialPayment')->result_class, {'foreign.user' => ' self.id'}, { 'accessor' => 'multi', 'cascade_copy' => 1, 'cascade_delete' => 0, 'is_depends_on' => 0, 'join_type' => 'LEFT', }) for $class, $source; } пт, 6 нояб. 2020 г. в 18:05, Robert Rothenberg <rob...@gmail.com>: > Is it possible to write a DBIC result class that loads a shared > component or mixin/role that defines a column and relation, e.g. > something like > > __PACKAGE__->add_column( "foobar_id", { data_type => "integer", > is_foreign_key => 1 } ); __PACKAGE__->belongs_to( "foobar", > "My::Schema::Result::Foobar", { "id" => "foobar_id" } ); so that this > code can be reused in other results? I've experimented with treating > this as a component or parent class but get errors: Can't locate object > method "result_source_instance" Is there a way to defer running > "belongs_to" until after a result source is specified? > > > _______________________________________________ > List: http://lists.scsys.co.uk/cgi-bin/mailman/listinfo/dbix-class > IRC: irc.perl.org#dbix-class > SVN: http://dev.catalyst.perl.org/repos/bast/DBIx-Class/ > Searchable Archive: > http://www.grokbase.com/group/dbix-class@lists.scsys.co.uk
_______________________________________________ List: http://lists.scsys.co.uk/cgi-bin/mailman/listinfo/dbix-class IRC: irc.perl.org#dbix-class SVN: http://dev.catalyst.perl.org/repos/bast/DBIx-Class/ Searchable Archive: http://www.grokbase.com/group/dbix-class@lists.scsys.co.uk