6

2 つのテーブルがbookありlanguageます。book belongs_to language表は単なるlanguage列です。languagelanguage

$book->languageテーブルから言語をフェッチせずに、言語文字列を取得したいと思いlanguageます。それを行う方法はありますか?

コンテキストを返すことだと思います。ある種のオーバーロードを行う必要があります。たとえば、次のように言います。

use overload "language_string" => sub {
  my $self = shift;
  return $self->language;
}, fallback => 1;

しかし、その場合、もちろん、私はまだ言語を習得しています。

4

1 に答える 1

6

1 つの解決策は、列とは異なる名前でリレーションシップを定義することrel_$colnameです。その場合、DBIC によって生成されるアクセサ メソッドは、列の値と関連するオブジェクトに対して異なります。

リレーションシップ名を変更したくない場合は、いつでも列の値にアクセスできます$row->get_column('colname');

于 2012-08-10T10:41:49.160 に答える