On 4/7/06, Mark Hedges <[EMAIL PROTECTED]> wrote:
As far as I can see, the only way out of it is to rename one of the two relationships to 'biz2' or whatever. That's essentially what you'd have to do if you were writing the query in SQL right?
Alternatively, I think it may be possible to do what you want using the -from attribute, but you might go mad trying. Read: http://search.cpan.org/~mstrout/DBIx-Class-0.06000/lib/DBIx/Class/ResultSet.pm#from
Perhaps it would be nice if it were possible to assign aliases to relationships for situations such as this:
Your::Schema::Bar->belongs_to('biz', 'Your::Schema::Biz', undef,
{ aliases => ['biz2', 'other_alias'] });
Overkill probably.
On Fri, 7 Apr 2006, Jason Galea wrote:
> not much more than a shot in the dark, but something similar to this worked
> for me the other day..
>
> my $rs = $schema->resultset('Foo')->search(
> { 'me.foo_id' => $foo_id },
> { prefetch => [
> 'baz',
> { bar => 'biz' }
> ],
> },
> );
Oh I get it. Thanks, that works nicely.
I do have another prefetch problem where I try to two-tier join the
same class through two different relationship tables. I try this now:
my $rs = $schema->resultset('Foo')->search(
{ 'me.foo_id' => $foo_id },
{ prefetch => [
{ bar => 'biz' },
{ bee => 'biz' },
],
},
);
or equivalently:
my $rs = $schema->resultset('Foo')->search(
{ 'me.foo_id' => $foo_id },
{ prefetch => {
bar => 'biz',
bee => 'biz',
},
},
);
The sql that results does something like
LEFT JOIN bar bar ON foo.foo_id = bar.foo_id
LEFT JOIN biz biz ON bar.bar_id = biz.bar_id
LEFT JOIN bee bee ON foo.foo_id = bee.foo_id
LEFT JOIN biz biz ON bar.bar_id = biz.bar_id
and DBI throws "Not unique table/alias 'biz' at script line x".
Unfortunately I'm dense and I don't get the join syntax...
would that solve this? There are so many confusing mixes
of scalars, arrayrefs and hashrefs I'm not sure what I'm doing.
Thanks if someone has worked this out....
Mark
_______________________________________________
List: http://lists.rawmode.org/cgi-bin/mailman/listinfo/dbix-class
Wiki: http://dbix-class.shadowcatsystems.co.uk/
IRC: irc.perl.org#dbix-class
SVN: http://dev.catalyst.perl.org/repos/bast/trunk/DBIx-Class/
As far as I can see, the only way out of it is to rename one of the two relationships to 'biz2' or whatever. That's essentially what you'd have to do if you were writing the query in SQL right?
Alternatively, I think it may be possible to do what you want using the -from attribute, but you might go mad trying. Read: http://search.cpan.org/~mstrout/DBIx-Class-0.06000/lib/DBIx/Class/ResultSet.pm#from
Perhaps it would be nice if it were possible to assign aliases to relationships for situations such as this:
Your::Schema::Bar->belongs_to('biz', 'Your::Schema::Biz', undef,
{ aliases => ['biz2', 'other_alias'] });
_______________________________________________ List: http://lists.rawmode.org/cgi-bin/mailman/listinfo/dbix-class Wiki: http://dbix-class.shadowcatsystems.co.uk/ IRC: irc.perl.org#dbix-class SVN: http://dev.catalyst.perl.org/repos/bast/trunk/DBIx-Class/
