Rumah > Soal Jawab > teks badan
Saya mempunyai senarai yang dipanggil maintenance
的数据库,其中有一个名为 cost
的字段。我现在想按 month 和year
获取成本总和,并按 month 和year
dalam susunan menurun. Bolehkah sesiapa membantu saya?
Ini yang saya cuba
$MaintenanceStats = Maintenance::oldest() ->get() ->groupBy(function($val) { return Carbon::parse($val->from)->format('F'); }) ->take(7);
Saya mendapat objek koleksi ini di bawah dan ia berfungsi dengan baik. Tetapi bagaimanakah saya boleh mengumpulkannya mengikut bulan dan tahun dan kemudian mengisihnya dalam susunan menurun dan bukannya hanya mengumpulkan mengikut bulan? Juga, saya hanya memerlukan jumlah perbelanjaan bulanan; Saya tidak memerlukan semua rekod penyelenggaraan.
Illuminate\Database\Eloquent\Collection {#1517 ▼ // app\Http\Controllers\GeneralController.php:40 #items: array:5 [▼ "September" => Illuminate\Database\Eloquent\Collection {#1452 ▶} "July" => Illuminate\Database\Eloquent\Collection {#1530 ▶} "January" => Illuminate\Database\Eloquent\Collection {#1519 ▶} "November" => Illuminate\Database\Eloquent\Collection {#1520 ▶} "December" => Illuminate\Database\Eloquent\Collection {#1521 ▶} ] #escapeWhenCastingToString: false }
P粉5614384072024-03-29 11:08:04
Cara terbaik ialah menggunakan pertanyaan pangkalan data untuk melakukan ini, tetapi anda juga memerlukan pertanyaan mentah:
$maintenanceStats = Maintenance::selectRaw("year(`from`) AS year, month(`from`) AS month, sum(cost) AS cost_total") ->groupByRaw("year(`from`)") ->groupByRaw("month(`from`)") ->orderBy('year') ->orderBy('month') ->get();