« DBICでハマらないために Vol.1 | メイン | CocoaMySQL vs Navicat vs Execute Query »

DBIC Tips Vol.2

prefetch & +asした場合は+asのターゲットを定められるよ

グループ has_many ユーザーというのを例にします。
パスワードの長さを調べようと・・・

$schema->resultset('Group')->search(
    {
    },
    {
        prefetch => 'users',
        '+as'     => 'password_length',
        '+select' => { length => 'users.password' },
    }
);

とした場合、group->users->first->get_column('password_length') は例外になってしまいます。 正解は

$schema->resultset('Group')->search(
    {
    },
    {
        prefetch => 'users',
        '+as'     => 'users.password_length',
        '+select' => { length => 'users.password' },
    }
);

+asはDBICが解釈しやすいように、接頭辞を付けてあげられる。

トラックバック

このエントリーのトラックバックURL:
http://bokut.in/mt4/mt-tb.cgi/45

コメントを投稿

(いままで、ここでコメントしたことがないときは、コメントを表示する前にこのブログのオーナーの承認が必要になることがあります。承認されるまではコメントは表示されません。そのときはしばらく待ってください。)