2012-08-14 4 views
3

나는 DBIx::Class를 사용하고 있는데이 같은 쿼리가이 실제 열이 아니기 때문에 내가 좋아하는 것 DBIx :: 클래스 임시 열

$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

나는 당신이 무슨 뜻인지 안다. 단점과 단점이 있지만 SQL로는 충분히 익숙해 져서별로 도움이되지 않는다고 생각합니다. 그것은 제가 촉매제 응용 프로그램을 작성하고 있으며, 많은 것들이'DBIx :: Class'와 통합되어있어서 기본적으로 사용해야만한다고 생각합니다. – srchulo

답변

2

select docs은 달성하려는 목표를 달성하는 방법을 완벽하게 설명합니다. 가능한 경우 리터럴 SQL을 사용하지 않는 것이 좋습니다. 대신 { sum => \'UNIX_TIMESTAMP(end_time)-UNIX_TIMESTAMP(start_time)' }을 사용할 수 있습니다. 리터럴 SQL의 'as'는 열에 이름을 지정하는 데 필요하지 않으므로 select as 대신 as 검색 특성이나 열 바로 가기를 사용해야합니다.

+0

매우 도움이됩니다. 고맙습니다! – srchulo

관련 문제