我想将有关KBPHP的旧统计站点迁移到Laravel5。我想知道,Laravel处理该查询的方式是什么?我的意思是,在ActiveRecords上,我必须直接直接手工编写查询,无法处理它。
也许有类似的东西可以在Laravel上写,或者可以用手写的方式!
这是查询:
public function agresiones_get_genero($year){
$query = " SELECT tsagredido.id, tsagredido.tsagredido,
SUM( IF (agredidos.gen_id = 1, 1, 0) ) m, SUM( IF (agredidos.gen_id = 2, 1, 0) ) f,
SUM( IF (agredidos.gen_id = 3, 1, 0) ) l, SUM( IF (agredidos.gen_id = 4, 1, 0) ) n
FROM agredidos
INNER JOIN tsagredido ON agredidos.tsagredido_id = tsagredido.id
INNER JOIN alertas ON agredidos.alertas_id = alertas.id
WHERE alertas.anio = $year AND alertas.publicada_id = 1 GROUP BY agredidos.tsagredido_id";
return $this->find_all_by_sql($query);
}
将agredidos翻译成被攻击者,tsagredidos就像说“被攻击者的职业”
有4个表不涉及,tsagredidos,性别,agredidos和警报。
被警报是有关agredidos,并agredidos包含关系tsagredidos和性别。
性别包含男性(m),女性(f),女同性恋,男同性恋,变性人(l)和无(n)选项,而tsagredidos是对agredidos的职业类型列表
并且它们由警报年份的传入变量过滤
http://alertas.clibrehonduras.com/reportes/sujeto_agredido_genero
感谢您的任何帮助。这可能是一个简单的解决方案,但我是Laravel ENV上的一名新手。
Agredidos::join('tsagredido','agredidos.tsagredido_id','=','tsagredido.id')
->join('alertas','agredidos.alertas_id','=','alertas.id')
->where('alertas.anio',$year)
->where('alertas.publicada_id',1)
->groupBy('agredidos.tsagredido_id')
->get([
'tsagredido.id,',
'tsagredido.tsagredido',
DB::raw('SUM( IF (agredidos.gen_id = 1, 1, 0) ) m'),
DB::raw('SUM( IF (agredidos.gen_id = 2, 1, 0) ) f'),
DB::raw('SUM( IF (agredidos.gen_id = 3, 1, 0) ) l'),
DB::raw('SUM( IF (agredidos.gen_id = 4, 1, 0) ) n )
]);
或者
DB::table('agredidos')->join('tsagredido','agredidos.tsagredido_id','=','tsagredido.id')
->join('alertas','agredidos.alertas_id','=','alertas.id')
->where('alertas.anio',$year)
->where('alertas.publicada_id',1)
->groupBy('agredidos.tsagredido_id')
->get([
'tsagredido.id,',
'tsagredido.tsagredido',
DB::raw('SUM( IF (agredidos.gen_id = 1, 1, 0) ) m'),
DB::raw('SUM( IF (agredidos.gen_id = 2, 1, 0) ) f'),
DB::raw('SUM( IF (agredidos.gen_id = 3, 1, 0) ) l'),
DB::raw('SUM( IF (agredidos.gen_id = 4, 1, 0) ) n )
]);
这可能对你有用:)
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句