[Dbix-class] Retrieving join table info from many_to_many
Jess Robinson
castaway at desert-island.me.uk
Mon Feb 18 12:47:49 GMT 2008
Hi Paul,
On Sun, 17 Feb 2008, Paul Makepeace wrote:
> I have two tables of things, user and widget. I have a join table
> user_widget and have set up the DBIC bits so I can say @widgets =
> $user->widgets(). Now, for each of @widgets I actually want a piece of
> info in user_widgets, color (i.e. each user can customize the
> appearance of their widget).
An m2m bridge is essentially a way to skip the link table and jump
straight to the other side of it. If you want data from the link table,
then use the link table rel?
I assume your user has a has_many rel to user_widget, so replace :
my @widgets :Stashed = $user->widgets;
with
my @widgets :Stashed = $user->link_widgets;
And use $linkwidget.color, linkwidget.widget.name etc
To prefetch:
my $widgets_rs :Stashed = $user->link_widgets->search({}, { prefetch =>
'widget' });
> Is there any way to get that (ideally prefetched) color from the join
> table, given a $bar? Or do I have to get a list of the join table
> entries prefetching widget and then iterate over that?
>
> I'm aiming for, e.g.,
>
> my @widgets :Stashed = $user->widgets;
>
> [% FOREACH widget = widgets %]
> <td>[% widget.name %] has color [% widget.[magic here?].color %]</td>
> [% END %]
>
Jess
More information about the DBIx-Class
mailing list