2012-08-09 15 views
6

Tengo dos tablas, book y language; bookbelongs_tolanguage teniendo una columna language indicando en qué idioma está. La tabla language es solo la columna language.¿Cómo obtengo el valor de una clave externa en lugar de obtener el objeto?

Quiero hacer $book->language y obtener la cadena de idioma, sin recuperar el idioma de la tabla language. ¿Hay una manera de hacer eso?

Sospecho que se trata de return context. ¿Debo hacer algún tipo de sobrecarga, dicen:

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

Pero en ese caso estoy, por supuesto, sigue recibiendo el idioma.

Respuesta

6

Una solución es definir las relaciones con nombres diferentes a las columnas, p. rel_$colname. Entonces los métodos de acceso generados por DBIC serán diferentes para el valor de columna y los objetos relacionados.

Si no desea cambiar sus nombres de relación que siempre se puede acceder al valor de la columna con $row->get_column('colname');

+1

Gracias, get_column era exactamente lo que estaba buscando para! – Jon

Cuestiones relacionadas