PlanController.php 1.1 KB

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