如何将time()函数过滤的mysql查询转换为laravel查询生成器?

yqlxgs2m  于 2021-06-21  发布在  Mysql
关注(0)|答案(1)|浏览(311)

到目前为止,这是mysql查询,它工作得非常好。它通过将传递的值与时间(fecha\u 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类型,它同时具有日期和时间。
如何做到这一点?
wtzytmuj

wtzytmuj1#

你为什么用whereraw?你可以用wheretime代替whereraw。这是更好的方法。。。例如:

->whereTime('detalle_evaluaciones.fecha_hora)', '=', $hora1);

相关问题