我正在使用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似乎不起作用。有谁知道如何获得这些临时列?谢谢!
答案 0 :(得分:2)
select docs完美地描述了如何实现您想要实现的目标。
还建议尽可能避免使用文字SQL,您可以使用{ sum => \'UNIX_TIMESTAMP(end_time)-UNIX_TIMESTAMP(start_time)' }
代替。
文字SQL中的“as”不需要为列命名,您必须使用as search属性或更好的列快捷方式而不是select + as。