On Thu, 13 Apr 2006, Matt S Trout wrote:
> Mike Rylander wrote:
> > On 4/12/06, Mark Hedges <[EMAIL PROTECTED]> wrote:
> >> I found that if I do a prefetch on a Foo RS to its have_many
> >> Bar, but it doesn't have any Bars, I don't get the Foo at all.
> >>
> >> This is similar to a problem where if I do a prefetch from one
> >> to another with a 1:1 relationship, but the other doesn't exist,
> >> it does not work if I defined with has_one but it does work if I
> >> defined if might_have.
> >>
> >> However there isn't a fix for a 1:N relationship. (Doesn't 1:N
> >> imply that N could equal 0?) Instead I have to remember where
> >> this drop might occur and I get no object, and I can't prefetch.
> >>
> >
> > Sounds like has_many should use LEFT JOIN ... [he says, sniping from
> > the sidelines having not looked at the code]
>
> It does :) -
Hrmm, you're right. And when I just fetch that relationship it
works fine, I get the top-level entity. It happened when I did this:
Foo has_many Bar belongs_to Baz
... prefetch => { bar => 'baz' }
But no Bar showed up. Then I didn't get anything at all.
I seem to recall I had to make the second-level relationship
Bar belongs_to Baz to stop an infinite loop going the other
direction from Baz has_one Bar. Maybe I'm tying my
shoelaces together.
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/