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