<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-&gt;next::method(@cols, &#39;additional&#39;, &#39;cols&#39;);</div><div>}</div><div><br></div><div><br></div><div><br></div><div>Relationships are more complicated. As far as i remember you can&#39;t add it from inside &quot;add_columns&quot;.</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-&gt;source($rsname) or next;<br>        $source-&gt;result_class-&gt;finalize_schema($source) if $source-&gt;result_class-&gt;can(&#39;finalize_schema&#39;);<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>        $_-&gt;add_relationship(&#39;payments&#39;, $source-&gt;schema-&gt;source(&#39;SocialPayment&#39;)-&gt;result_class, {&#39;foreign.user&#39; =&gt; &#39;<a href="http://self.id">self.id</a>&#39;}, {<br>             &#39;accessor&#39;       =&gt; &#39;multi&#39;,<br>             &#39;cascade_copy&#39;   =&gt; 1,<br>             &#39;cascade_delete&#39; =&gt; 0,<br>             &#39;is_depends_on&#39;  =&gt; 0,<br>             &#39;join_type&#39;      =&gt; &#39;LEFT&#39;,<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 &lt;<a href="mailto:robrwo@gmail.com">robrwo@gmail.com</a>&gt;:<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__-&gt;add_column( &quot;foobar_id&quot;,   { data_type =&gt; &quot;integer&quot;, <br>
is_foreign_key =&gt; 1 } ); __PACKAGE__-&gt;belongs_to( &quot;foobar&quot;, <br>
&quot;My::Schema::Result::Foobar&quot;, { &quot;id&quot; =&gt; &quot;foobar_id&quot; } ); so that this <br>
code can be reused in other results? I&#39;ve experimented with treating <br>
this as a component or parent class but get errors: Can&#39;t locate object <br>
method &quot;result_source_instance&quot; Is there a way to defer running <br>
&quot;belongs_to&quot; 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>