2012-04-16 3 views
4

내가 두 클래스DBIx :: 클래스 has_many는

foreign.weirdkey => substr(self.key, 1, 9) 

에 연결되어있는 컬럼의 문자열에 가입 ... 그리고 내 인생이를 나타 내기 위해 has_many 호출을 구성하는 방법을 알아낼 수 없습니다 .

기본 데이터베이스 (Oracle 테이블 집합)는 외래 키가 정의되어 있지 않으며 고정되어 있으며 내 컨트롤 외부에 있습니다.

필자는 문서를 훑어보고 매뉴얼 has_many 정의의 범위 내에서 작동하는 구문을 찾을 수없는 것처럼 보입니다.

도움을 주시면 감사하겠습니다.

답변

3

이 같은 작동합니다 : 당신이 현재 행 개체가 있다면 펄의 SUBSTR을 사용

__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) 
    }) 
}); 

주, 그래서 다음이로 붕괴 할 것이다 가입 단순히 절과에 대한 데이터베이스를 사용하지 않습니다 어디 문자열 munging. 문제가 있으면 그것을 제거하십시오. DBIC_TRACE는 계속 진행되는 것을 명확히해야합니다.

여기에 문서 : https://metacpan.org/pod/DBIx::Class::Relationship::Base#condition

관련 문제