Wie löse ich Gruppierungs- und Sortierungsprobleme in Laravel?
P粉823268006
P粉823268006 2024-03-28 18:08:15
0
1
418

Ich habe eine Liste mit dem Namen maintenance 的数据库,其中有一个名为 cost 的字段。我现在想按 month 和year 获取成本总和,并按 month 和year in absteigender Reihenfolge. Kann mir jemand helfen?

Das habe ich versucht

$MaintenanceStats = Maintenance::oldest()
    ->get()
    ->groupBy(function($val) {
         return Carbon::parse($val->from)->format('F');
     })
     ->take(7);

Ich habe dieses Sammlungsobjekt unten und es funktioniert einwandfrei. Aber wie kann ich sie nach Monat und Jahr gruppieren und sie dann in absteigender Reihenfolge sortieren, anstatt nur nach Monat zu gruppieren? Außerdem benötige ich nur die gesamten monatlichen Ausgaben; ich benötige nicht alle Wartungsunterlagen.

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粉823268006
P粉823268006

Antworte allen(1)
P粉561438407

最好的方法是使用数据库查询来完成此操作,但您还需要一个原始查询:

$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();
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage
Über uns Haftungsausschluss Sitemap
Chinesische PHP-Website:Online-PHP-Schulung für das Gemeinwohl,Helfen Sie PHP-Lernenden, sich schnell weiterzuentwickeln!