PlanController.php 1.0 KB

12345678910111213141516171819202122232425262728293031323334353637
  1. <?php
  2. namespace App\Http\Controllers\V1\Staff;
  3. use App\Http\Controllers\Controller;
  4. use App\Models\Plan;
  5. use App\Models\User;
  6. use Illuminate\Http\Request;
  7. use Illuminate\Support\Facades\DB;
  8. class PlanController extends Controller
  9. {
  10. public function fetch(Request $request)
  11. {
  12. $counts = User::select(
  13. DB::raw("plan_id"),
  14. DB::raw("count(*) as count")
  15. )
  16. ->where('plan_id', '!=', NULL)
  17. ->where(function ($query) {
  18. $query->where('expired_at', '>=', time())
  19. ->orWhere('expired_at', NULL);
  20. })
  21. ->groupBy("plan_id")
  22. ->get();
  23. $plans = Plan::orderBy('sort', 'ASC')->get();
  24. foreach ($plans as $k => $v) {
  25. $plans[$k]->count = 0;
  26. foreach ($counts as $kk => $vv) {
  27. if ($plans[$k]->id === $counts[$kk]->plan_id) $plans[$k]->count = $counts[$kk]->count;
  28. }
  29. }
  30. return response([
  31. 'data' => $plans
  32. ]);
  33. }
  34. }