我想在distinct和groupby之后查询结果 这是我的代码
$results = DB::table('dokumen')
->join('pengadaan', 'dokumen.id_jenis_pengadaan', '=', 'pengadaan.id')
->select(
DB::raw('COUNT(nama_paket) AS jml'),
DB::raw('jenis_pengadaan as jenis_pengadaan'),
DB::raw('tahun as tahun')
)
->groupBy('jenis_pengadaan', 'tahun')
->orderBy('tahun')
->get();
$hasil = [];
foreach ($results as $result) {
$kategori = $result->jenis_pengadaan;
$jml = $result->jml;
$hasil[] = [
'tahun' => $result->tahun,
'kategori_paket' => $kategori,
'jml' => $jml,
];
}
dd($hasil);
这是我的代码的结果
array:12 [▼ // app/Http/Controllers/HomeController.php:51
0 => array:3 [▶
"tahun" => 2022
"kategori_paket" => array:1 [▶
0 => "Pengadaan Langsung - Barang"
]
"jml" => array:1 [▶
0 => "9"
]
]
1 => array:3 [▶
"tahun" => 2022
"kategori_paket" => array:1 [▶
0 => "Pengadaan Langsung - Konstruksi"
]
"jml" => array:1 [▶
0 => "69"
]
]
2 => array:3 [▶
"tahun" => 2022
"kategori_paket" => array:1 [▶
0 => "Tender-Konstruksi"
]
"jml" => array:1 [▶
0 => "12"
]
]
3 => array:3 [▶
"tahun" => 2023
"kategori_paket" => array:1 [▶
0 => "Pengadaan Langsung - Barang"
]
"jml" => array:1 [▶
0 => "30"
]
]
4 => array:3 [▶
"tahun" => 2023
"kategori_paket" => array:1 [▶
0 => "Pengadaan Langsung - Jasa Lainnya"
]
"jml" => array:1 [▶
0 => "17"
]
]
5 => array:3 [▶
"tahun" => 2023
"kategori_paket" => array:1 [▶
0 => "Pengadaan Langsung - Konstruksi"
]
"jml" => array:1 [▶
0 => "201"
]
]
6 => array:3 [▶
"tahun" => 2023
"kategori_paket" => array:1 [▶
0 => "Tender-Konstruksi"
]
"jml" => array:1 [▶
0 => "25"
]
]
7 => array:3 [▶
"tahun" => 2023
"kategori_paket" => array:1 [▶
0 => "Seleksi"
]
"jml" => array:1 [▶
0 => "5"
]
]
8 => array:3 [▶
"tahun" => 2023
"kategori_paket" => array:1 [▶
0 => "e-Katalog"
]
"jml" => array:1 [▶
0 => "2"
]
]
9 => array:3 [▶
"tahun" => 2023
"kategori_paket" => array:1 [▶
0 => "Pengadaan Langsung-Konsultan"
]
"jml" => array:1 [▶
0 => "14"
]
]
]
如何按年份对 $hasil only 2 数组进行分组?所以只有2022年和2023年
我已经尝试了一切来解决这个问题。但我找不到答案 希望你们不能帮我解决这个问题 谢谢 。最好的问候
这是调整后的代码:
->join('pengadaan', 'dokumen.id_jenis_pengadaan', '=', 'pengadaan.id')
->select(
DB::raw('COUNT(DISTINCT nama_paket) AS jml'),
DB::raw('jenis_pengadaan as jenis_pengadaan'),
DB::raw('tahun as tahun')
)
->groupBy('jenis_pengadaan', 'tahun')
->orderBy('tahun')
->get();
$hasil = [];
foreach ($results as $result) {
$kategori = $result->jenis_pengadaan;
$jml = $result->jml;
$hasil[] = [
'tahun' => $result->tahun,
'kategori_paket' => $kategori,
'jml' => $jml,
];
}
dd($hasil)
您可以修改循环以将具有相同
$result->tahun
值的条目收集在一起:
$hasil = [];
foreach ($results as $result) {
$hasil[$result->tahun] = $hasil[$result->tahun] ?? [];
$hasil[$result->tahun][] = [
'tahun' => $result->tahun,
'kategori_paket' => $result->jenis_pengadaan,
'jml' => $result->jml,
];
}