到目前为止,这是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类型的,具有日期和时间。
如何实现?
答案 0 :(得分:0)
为什么使用whereRaw?您可以使用whereTime代替whereRaw。更好的方法...例如:
->whereTime('detalle_evaluaciones.fecha_hora)', '=', $hora1);