如何获取在一定时间内具有组的用户数

时间:2019-02-14 17:52:51

标签: php laravel

有一个类别的用户$参加分组的用户,没有,分组有开始时间$ start_time和结束$ end_time,我需要推断在特定日期分组的用户数量范围,但我没有知道如何编写最后一个条件以及如何将dateRange链接到用户,因为它们属于groups参数。

 <?php

namespace App\Http\Controllers;

use Illuminate\Http\Request;
use app\Group;
use app\Participants;
use Carbon\Carbon;


 class ParticipantCounts extends Controller
 {
  public function ParticipantCountsWithGroups()
 {
   $participants = $Participants::has('groups')->get();


    $dateRange = "DD.MM.YY-DD.MM.YY";
    $splitTimeStamp = explode("-", $dateRange);
    $start_time = $splitTimeStamp[0];
    $end_time = $splitTimeStamp[1];

    Carbon::parse($start_time)->format('Y-m-d');
    Carbon::parse($end_time)->format('Y-m-d');

    $participants->where(function($query)
    {
      $query->where('start_date')->whereBetween('end_date');
    })->orWhere(function($query))
        {
            $query->where('end_time')->whereBetween('end_time');
        }
    }
}

There is a simple table

1 个答案:

答案 0 :(得分:0)

以下应为您提供group_id以及该组中日期范围内的特定计数。

Participants::join('groups', 'groups.id', '=', 'participants.group_id')
    ->select('participants.group_id', \DB::raw('count(*) as participant_count'))
    ->where('groups.start_time', '>=', $startDate)
    ->where('groups.end_time', '<=', $endDate)
    ->groupBy('participants.group_id')
    ->get();