任意のSQLを実行する

テーブルクラスを以下のように作成する。

 package MyApp::Schema::Result::UserExt;
 
 use base 'DBIx::Class';
 
 __PACKAGE__->load_components(qw/Core/);
 __PACKAGE__->table("NONE");
 __PACKAGE__->add_columns(qw/user_id/);
 __PACKAGE__->result_source_instance->name(\"(
 SELECT
     u.user_id
 FROM
     user u
 LEFT OUTER JOIN
     team t
 using (user_id)
 WHERE
     status = ?
 GROUP BY
     u.user_id
 ORDER BY
     max(coalesce(t.reg_date, u.reg_time)) DESC
 )");
 
 1;

上記のテーブルクラスを以下のようにして使う。

 my @users = $schema->resultset( 'UserExt' )->search( {}, 
   {
     bind  => [ 1 ]
   }
 )->all;

トップ   新規 一覧 検索 最終更新   ヘルプ   最終更新のRSS