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