DBIx :: Class临时列

时间:2012-08-14 22:07:17

标签: mysql perl catalyst temporary dbix-class

我正在使用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似乎不起作用。有谁知道如何获得这些临时列?谢谢!

1 个答案:

答案 0 :(得分:2)

select docs完美地描述了如何实现您想要实现的目标。 还建议尽可能避免使用文字SQL,您可以使用{ sum => \'UNIX_TIMESTAMP(end_time)-UNIX_TIMESTAMP(start_time)' }代替。 文字SQL中的“as”不需要为列命名,您必须使用as search属性或更好的列快捷方式而不是select + as。