3

DBIx::Classを使用しており、次のようなクエリがあります。

$groups = $c->model('DB::Project')->search(
{ "sessions.user_id"=>$c->user->id,done_yn=>'y' },
{
    select   => ["name", "id",\'SUM(UNIX_TIMESTAMP(end_time)-UNIX_TIMESTAMP(start_time)) as total_time'], #\''
    join         => 'sessions',
  }
);

の値を取得できるようにしたいのですSUM(UNIX_TIMESTAMP(end_time)-UNIX_TIMESTAMP(start_time))が、これはテーブル内の実際の列ではないため、DBIx::Class::Rowオブジェクトの total_time を参照してもうまくいかないようです。これらの一時的な列を取得する方法を知っている人はいますか? ありがとう!

4

1 に答える 1

2

選択したドキュメントは、達成しようとしていることを達成する方法を完全に説明しています。また、可能であればリテラル SQL を避けることをお勧めします{ sum => \'UNIX_TIMESTAMP(end_time)-UNIX_TIMESTAMP(start_time)' }。代わりに使用できます。リテラル SQL の 'as' は列に名前を付けるために必要ではありません。

于 2012-08-14T23:00:40.513 に答える