Как преобразовать запрос mysql, отфильтрованный функцией TIME(), в построитель запросов laravel?

Пока это запрос MySQL, и он отлично работает. Он фильтрует записи, сопоставляя переданное значение с TIME(fecha_hora):

 select nombre_departamento, categoria_respuesta, count(valor_evaluacion) from 
       detalle_evaluaciones JOIN departamentos ON departamentos.id = 
       detalle_evaluaciones.departamentos_id JOIN tipo_respuestas ON tipo_respuestas.id = detalle_evaluaciones.tipo_respuestas_id 
        where TIME(fecha_hora) = '06:13:00'

    group by nombre_departamento, categoria_respuesta ORDER BY `tipo_respuestas`.`id` desc 

Это то, что я пробовал:

$hora = $request->get('hora');
  $hora1 = date('H:i:s', strtotime("$hora"));
        $calif = DB::table ('detalle_evaluaciones')->select (DB::raw('departamentos.nombre_departamento,tipo_respuestas.categoria_respuesta,   detalle_evaluaciones.valor_evaluacion, COUNT(detalle_evaluaciones.valor_evaluacion) as cantidad'))
      ->join  ('departamentos','detalle_evaluaciones.departamentos_id','=','departamentos.id')
      ->join  ('tipo_respuestas','detalle_evaluaciones.tipo_respuestas_id','=','tipo_respuestas.id')
      ->whereRaw('(TIME(detalle_evaluaciones.fecha_hora)=?)',$hora1)

      ->groupby ('departamentos.nombre_departamento','tipo_respuestas.categoria_respuesta')

      ->orderby ('tipo_respuestas.id','DESC')
      ->paginate(10);

$calif сохранит все данные запроса и вернет их, а $hora1 получит время ввода и передаст его значение в предложение where построителя запросов. Это вообще не работает. fecha_hora имеет тип datetime и имеет как дату, так и время.

Как этого добиться?


person paradox M    schedule 15.09.2018    source источник


Ответы (1)


Почему вы используете whereRaw? Вы можете использовать whereTime вместо whereRaw. Это лучший способ... Например:

->whereTime('detalle_evaluaciones.fecha_hora)', '=', $hora1);
person Maksym Fedorov    schedule 15.09.2018
comment
Да, не знал о том, где Время. Большой. Отметил ваш как ответ - person paradox M; 16.09.2018