Perl 类在列的子字符串上有许多连接

Perl 类在列的子字符串上有许多连接,perl,dbix-class,Perl,Dbix Class,我有两个类链接在 foreign.weirdkey => substr(self.key, 1, 9) …而且我一辈子都搞不懂如何构造has_许多调用来表示这一点 底层数据库(一组Oracle表)不定义外键,是固定的,不受我的控制 我浏览了文档,似乎找不到一种语法可以在手册的许多定义范围内工作 任何帮助都将不胜感激。像这样的东西应该可以: __PACKAGE__->has_many( baubles => 'My::Schema::Result::Thing', sub {

我有两个类链接在

foreign.weirdkey => substr(self.key, 1, 9)
…而且我一辈子都搞不懂如何构造has_许多调用来表示这一点

底层数据库(一组Oracle表)不定义外键,是固定的,不受我的控制

我浏览了文档,似乎找不到一种语法可以在手册的许多定义范围内工作


任何帮助都将不胜感激。

像这样的东西应该可以:

__PACKAGE__->has_many( baubles => 'My::Schema::Result::Thing', sub {
   my $args = shift;

   return ({
      "$args->{foreign_alias}.weirdkey" => \"substr($args->{self_alias}.key, 1, 9)",
   },
   $args->{self_rowobj} && {
      "$args->{foreign_alias}.weirdkey" => substr($args->{self_rowobj}->key, 1, 9)
   })
});
请注意,如果您有当前的row对象,我将使用perl的substr,因此连接将折叠成一个where子句,而不使用数据库进行字符串搜索。如果你有问题,就把它拿走或者摆弄一下。DBIC_TRACE应该清楚发生了什么

此处的文档: