Laravel - Как рассчитать количество праздников между двумя днями - PullRequest
1 голос
/ 11 апреля 2020

В моем приложении Laravel -5.8 я хочу извлечь количество праздников между двумя датами в другой таблице в базе данных. В основном у меня есть 2 таблицы:

  1. hr_leave_requests

  2. hr_holidays

     class HrHoliday extends Model
     {
      protected $table = 'hr_holidays';
       protected $fillable = [
      'holiday_name',
      'holiday_date',
      'created_at',
     ];
    }
    
    class HrLeaveRequest extends Model
    {
        protected $table = 'hr_leave_requests';
        protected $fillable = [
          'id',
          'commencement_date',
          'resumption_date',
        ];
    }
    

В моем контроллере У меня есть:

        $commencementDate   = Carbon::parse($request->commencement_date);
        $resumptionDate     = Carbon::parse($request->resumption_date);
        $holidays = DB::table('hr_holidays')->select('holiday_date')->whereYear('created_at', '=', date('Y'))->get();

        $commencementDate  and  $resumptionDate  are from hr_leave_requests

Как мне выполнить этот запрос:

$holidays = DB::table('hr_holidays')->select('holiday_date')->whereYear('created_at', '=', date('Y'))->get();

, чтобы получить количество выходных между $ commencementDate и $ resumingDate.

Спасибо.

Ответы [ 2 ]

0 голосов
/ 11 апреля 2020
 $commencementDate = Carbon::parse($request->commencement_date)
            ->startOfDay()        // 2020-01-01 00:00:00.000000
            ->toDateTimeString(); // 2020-01-01 00:00:00

 $resumptionDate = Carbon::parse($request->resumption_date)
            ->endOfDay()          // 2020-04-11 23:59:59.000000
            ->toDateTimeString(); // 2020-04-11 23:59:59

$holidays  = HrHoliday::whereHas('HrLeaveRequest', function ($q) use ($from, $to) {
            $q->whereBetween('created_at', [$from, $to]);
        })->get();


    dd($holidays);

Надеюсь, это поможет ..

0 голосов
/ 11 апреля 2020

В вашем запросе должен быть доступ к whereBetween().

$holidays = DB::table('hr_holidays')->select('holiday_date')->whereBetween('holiday_date', [$commencementDate, $resumptionDate])->whereYear('created_at', '=', date('Y'))->get(); 
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...