Hi,

I've been unsuccessful in creating an accessor alias for a column in a
many-to-one joined table. Here's my simplified schema defs:

package Track;

use base qw/DBIx::Class/;

__PACKAGE__->load_components(qw/UUIDColumns PK::Auto UTF8Columns Core/);
__PACKAGE__->table('track');
__PACKAGE__->resultset_class('DBIx::Class::ResultSet::Data::Pageset');
__PACKAGE__->add_columns(qw/id name/);
__PACKAGE__->set_primary_key(qw/id/);
__PACKAGE__->uuid_columns(qw/id/);
__PACKAGE__->uuid_class('::Data::UUID');
__PACKAGE__->utf8_columns(qw/name/);

__PACKAGE__->has_many(trackdescriptions => 'TrackDescription', 'track_id');
__PACKAGE__->add_columns('trackdescriptions.description' => { accessor =>
'description' });



package TrackDescription;

use base qw/DBIx::Class/;
__PACKAGE__->load_components(qw/UUIDColumns UTF8Columns Core/);
__PACKAGE__->table('track_description');
__PACKAGE__->add_columns(qw/track_id locale_id description/);
__PACKAGE__->uuid_columns(qw/track_id locale_id/);
__PACKAGE__->uuid_class('::Data::UUID');
__PACKAGE__->utf8_columns(qw/description/);

__PACKAGE__->belongs_to( track => 'Track', 'track_id' );


Now in my (Catalyst Controller) code, assuming I wanted all tracks with
descriptions at a particular locale pulled back in 1 query:

        $c->stash->{track} = $c->model('Track')->search_rs(
                { 'trackdescriptions.locale_id' => $my_locale_id }
                {
                   select => [
                                          'id',
                                          'name',
                                          'description'
                   ],
                   as => [
                           qw/id name description/
                   ],
                   join => 'trackdescriptions',
                   prefetch => 'trackdescriptions'
                }
        )->single;

This correctly pulls the data back, but in my Template Toolkit template I
can only access the description using:

        track.trackdescriptions.description

I was hoping the accessor would enable me to access the description via:

        track.description

What have I missed here? Is this a TT list vs method issue?

Note that in my actual code, I'm using some additional database functions in
the SELECT - otherwise I could remove the select/as altogether.

Thanks,

Ben



_______________________________________________
List: http://lists.scsys.co.uk/cgi-bin/mailman/listinfo/dbix-class
IRC: irc.perl.org#dbix-class
SVN: http://dev.catalyst.perl.org/repos/bast/DBIx-Class/
Searchable Archive: http://www.grokbase.com/group/[EMAIL PROTECTED]

Reply via email to