gpt4 book ai didi

mysql - Laravel 5 中的复杂查询

转载 作者:行者123 更新时间:2023-11-29 12:21:36 25 4
gpt4 key购买 nike

我想将 KBPHP 上的旧统计站点迁移到 Laravel 5。我想知道 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 个表,tsagredidosgenderagredidosalerts

警报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 )

]);

这可能对你有用:)

关于mysql - Laravel 5 中的复杂查询,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28933983/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com