DBIC Tips Vol.2

| コメント(0)

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が解釈しやすいように、接頭辞を付けてあげられる。

コメントする