gpt4 book ai didi

php - Laravel:Laravel 中的 MYSQL 查询

转载 作者:可可西里 更新时间:2023-11-01 09:00:19 26 4
gpt4 key购买 nike

我有一个工作查询是这样的

SELECT s.name as status, q.name as quality, p.name process, count(*) 
FROM plates
JOIN equipment_status_codes s on equipment_status_code_id = s.id
JOIN plate_qualities q on plate_quality_id = q.id
JOIN processes p on process_id = p.id WHERE project_id in
(SELECT id
from projects
WHERE name like 'SPIRIT')
GROUP BY s.name, q.name, p.name ASC with ROLLUP

这很好用并且返回结果很好。

现在我想把它放在 laravel 语法中,但遇到了一些困难。

所以我一直在思考这些问题。

  return Plate::select('equipment_status_codes.name as Status', 'plate_qualities.name as Quality', 'processes.name as Process')
->join('equipment_status_codes', 'plates.equipment_status_code_id', '=', 'equipment_status_codes.id')
->join('plate_qualities', 'plates.plate_quality_id', '=', 'plate_qualities.id')
->join('processes', 'plates.process_id', '=', 'processes.id')

->groupBy(DB::raw('equipment_status_code_id WITH ROLLUP'))
...
...
->get();

有人帮忙吗?提前致谢!

更新:@Govind萨姆罗

我试过这个查询。它有效(经过一些小的调整)但是我得到的结果与运行 sql 查询时得到的结果不同。

我包括了屏幕截图。

所以当我运行 sql 查询时。

我得到以下结果。

enter image description here

当我运行 laravel 查询时。

  return  DB::table('plates')
->join('equipment_status_codes', 'equipment_status_code_id', '=', 'equipment_status_codes.id')
->join('plate_qualities', 'plate_quality_id', '=', 'plate_qualities.id')
->join('processes', 'process_id', '=', 'processes.id')

->whereRaw("project_id IN(SELECT id from projects WHERE name like 'SPIRIT')")
->select(DB::raw('equipment_status_codes.name as Status'), DB::raw('IFNULL(plate_qualities.name, NULL) as Quality'), DB::raw('IFNULL(processes.name, NULL) as process'), DB::raw("COUNT(*) as Total" ))
->groupBy(DB::raw('equipment_status_codes.name WITH ROLLUP', 'plate_qualities.name WITH ROLLUP', 'processes.name WITH ROLLUP', 'asc'))
->get();

我得到以下信息。

enter image description here

快到了,但我不确定发生了什么?!有任何想法吗?

最佳答案

尝试使用 where 条件加入查询

return Plate::select('equipment_status_codes.name as Status', 'plate_qualities.name as Quality', 'processes.name as Process')
->join('equipment_status_codes', 'plates.equipment_status_code_id', '=', 'equipment_status_codes.id')
->join('plate_qualities', 'plates.plate_quality_id', '=', 'plate_qualities.id')
->join('processes', function($join)
{
$join->on('plates.process_id', '=', 'processes.id')
->whereIn('project_id', DB::table('projects')->where('name','LIKE','SPIRIT')->select('id')->get()->toArray());
})
->groupBy(DB::raw('equipment_status_code_id WITH ROLLUP'))
->get();

希望这会有所帮助。

关于php - Laravel:Laravel 中的 MYSQL 查询,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45794310/

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