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”不需要为列命名,您必须使用 as 搜索属性或更好的列快捷方式而不是 select+as。

于 2012-08-14T23:00:40.513 回答