2012-08-09 14 views
6

Ich habe zwei Tabellen, book und language; bookbelongs_tolanguage durch eine language Spalte, die angibt, in welcher Sprache es ist. Die language Tabelle ist nur die language Spalte.Wie erhalte ich den Wert eines Fremdschlüssels statt des Objekts?

Ich möchte $book->language tun und die Sprachzeichenfolge abrufen, ohne die Sprache aus der Tabelle language abzurufen. Gibt es eine Möglichkeit, das zu tun?

Ich vermute, es geht um Rückkehr Kontext. Sollte ich eine Art Überlast machen, sagen wir:

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

Aber in diesem Fall bekomme ich natürlich immer noch die Sprache.

Antwort

6

Eine Lösung besteht darin, die Beziehungen mit anderen Namen als den Spalten zu definieren, z. rel_$colname. Dann unterscheiden sich die von DBIC generierten Accessor-Methoden für den Spaltenwert und die zugehörigen Objekte.

Wenn Sie Sie immer den Spaltenwert mit $row->get_column('colname');

+1

Dank zugreifen können nicht Ihre Beziehung Namen ändern möchten, war GET_COLUMN genau das, was ich war auf der Jagd! – Jon