はまった JOIN with DBIx::Class

| コメント(0) | トラックバック(0)



DBIx::ClassでJOINを使用するには二つ目のハッシュにjoin要素を入れるんだが、ここにセットする名前ではまった。



My::Schema->resultset("Hoge")->search(
{ "hoga.poop" => $poop },
{
join => "hoga"
}
);

ってやってると、No such relationship...とか言われちゃう。色々と中身を見て最終的に



DBIx::Class::ResultSource->relationship_info($relation);

がundef返してる。さらに確かめるためにrelationshipの中身を見る:



use Data::Dumper;
print STDERR (My::Schema->resultset("Hoge")->result_source->_relationships), "\n";

で見ると、JOIN対象のテーブル名が"hoga"なのにたいして、ここで指定する名前はhogasと複数形になってる。ということで解決策:



My::Schema->resultset("Hoge")->search(
{ "hogas.poop" => $poop },
{
join => "hogas"
}
);

いやー、1時間くらいはまった。


Author

Daisuke Maki (a.k.a lestrrat): Perl hacker, Director of Japan Perl Association, YAPC::Asia Tokyo Organizer (2009-2012), Fluent in Japanese, English. Ex-Brazilian (sorta)

#perl #c #ruby #java #mysql #english #japanese #opensource #stf #cooking #scotch #cigar


このエントリーをはてなブックマ
ークに追加

翔泳社よりモダンPerl入門(2010)を出版させていただいております。できれば内容をアップデートしたいので是非皆様・・・現在の在庫処理にお力をお貸しください!><

月別アーカイブ