DBIC で複数リレーションの JOIN(間違い書いてました)

http://d.hatena.ne.jp/dayflower/20060715/1152939240
複数のリレーションに対して並列に prefetch を掛けることはできません。即座にエラーがでるわけではないのでちょっとハマりぎみなポイントです。
って書いてあったのを間にうけました>< というか、違う件です?

あーできますね。id:yappo さんスミマセン。

Relationship は SQL 上でJOIN 構文をオーガナイズする部分と,得られた結果を共通する値ごとにカラムを束ねる部分(データ再構築)の二つがあります。で,0.60 時代に後者のほうでイタイ目にあったことがあって,

  • 二つリレーションを貼っていて片方に該当レコードがない場合に主レコードが 0 になった
  • 同じような状況で両方のリレーションにレコードがある場合はうまく動くんだけど,ない場合に↑でいうデータ再構築部分で croak された

ことがありました。

当時きちんと条件をメモっておけばよかったんですが,いまいち覚えてないです。で,0.70 の pod 読んでると,
>


If the relationship is optional - ie the column containing the foreign key can be NULL - then the belongs_to relationship does the right thing - so in the example above $obj->author would return undef. However in this case you would probably want to set the join_type attribute so that a LEFT JOIN is done, which makes complex resultsets involving join or prefetch operations work correctly.