SQLをプロぺルに変換

select extract( epoch FROM (
SUM(COALESCE((apply_end_time -
apply_start_time),'00:00'::interval)
     - COALESCE(rest_time::interval,
    '00:00'::interval)
     - COALESCE(over_rest_time::interval,'00:00'
::interval)
     )))* interval '1 second'
FROM trn_work_time
WHERE user_id=142
group by user_id;

これをプロペルで表現すると

    /**
     * 総時間を取得
     *
     * @param interval time1           退勤時間
     * @param interval time2           出勤時間
     * @param interval time3           規定外休憩時間
     * @param interval sumtime         総時間(秒数)
     * @param interval sumtime_hour    総時間 (時間)
     *
     * @return interval 総時間を返す
     */
public static function fetchSumWorkTimeByUserId($userId, $ym)
{
 $time1 = 'COALESCE((' . self::APPLY_END_TIME . ' - ' . 
 self::APPLY_START_TIME . ")::interval, '00:00'
::interval)";

  $time2 = 'COALESCE(' .self::REST_TIME . "
::interval, '00:00'::interval)";
  $time3 = 'COALESCE(' .self::OVER_REST_TIME . "
::interval, '00:00'
::interval)";
 $sumTime = 'SUM(' . $time1 . ' - ' . $time2
 . ' - ' . $time3 . ')';
sumTime_hour = 'EXTRACT(EPOCH FROM' . '(' .$sumTime . ')
' . ')' . 
" * '1 second'::interval";
         
   $c = new Criteria();
   $c->clearSelectColumns();
   $c->addSelectColumn(self::USER_ID);
   $c->addAsColumn('SUM_WORK', $sumTime_hour);
   $c->add(self::USER_ID, $userId, Criteria::EQUAL);
   $c->addAnd(self::DATE, "DATE_TRUNC('month', " . 
self::DATE . ") = '" . $ym . "-01'", Criteria::CUSTOM);
   $c->addGroupByColumn(self::USER_ID);

   $rs = self::doSelectRS($c);
   $rs->setFetchMode(ResultSet::FETCHMODE_ASSOC);
   if ($rs->next()) { 
       $result = $rs->get('sum_work');
   } else {
   $result = '00:00:00';
   }
   return $result;
   }