Фильтр по месяцам в формате "Г-м-д"

у меня есть date в формате Y-m-d. Как отфильтровать по месяцам? Я указал месяц числами вроде January = 1, February = 2 и так далее.

public function scopegetmonthleavereport($query,$payroll_employee_id,$month)
{

         $query->join('tbl_payroll_leave_employee_v2','tbl_payroll_leave_schedulev2.payroll_leave_employee_id','=','tbl_payroll_leave_employee_v2.payroll_leave_employee_id')
         ->join("tbl_payroll_employee_basic","tbl_payroll_leave_employee_v2.payroll_employee_id","=","tbl_payroll_employee_basic.payroll_employee_id")
         ->join("tbl_payroll_leave_tempv2","tbl_payroll_leave_employee_v2.payroll_leave_temp_id","=","tbl_payroll_leave_tempv2.payroll_leave_temp_id")
         ->select(DB::raw('tbl_payroll_employee_basic.payroll_employee_id , tbl_payroll_leave_schedulev2.payroll_schedule_leave, tbl_payroll_employee_basic.payroll_employee_display_name, tbl_payroll_leave_schedulev2.payroll_leave_temp_with_pay, tbl_payroll_leave_tempv2.payroll_leave_type_id, tbl_payroll_leave_employee_v2.payroll_leave_employee_id, tbl_payroll_leave_schedulev2.consume, tbl_payroll_leave_employee_v2.payroll_leave_temp_hours, sum(tbl_payroll_leave_schedulev2.consume) as total_leave_consume, (tbl_payroll_leave_employee_v2.payroll_leave_temp_hours - sum(tbl_payroll_leave_schedulev2.consume)) as remaining_leave'))
         ->groupBy('tbl_payroll_leave_employee_v2.payroll_leave_temp_id')
         ->where('tbl_payroll_leave_schedulev2.payroll_leave_schedule_archived',0)
         ->where('tbl_payroll_leave_employee_v2.payroll_employee_id', $payroll_employee_id)
         ->whereBetween('tbl_payroll_leave_schedulev2.payroll_schedule_leave', $date);  //where i want to put the date


    return $query;
}

person nethkennnnn    schedule 23.11.2017    source источник
comment
построители божественных запросов такие ugly, но в SQL вы делаете WHERE MONTH(date_field) = :month Напоминает мне, что я должен построить ORM с лексером / парсером SQL ...   -  person ArtisticPhoenix    schedule 23.11.2017
comment
@ArtisticPhoenix, как я могу сделать это с красноречием в laravel, братан? ха-ха   -  person nethkennnnn    schedule 23.11.2017
comment
Я не знаю, что не использую Laravel, но этот конструктор запросов мне кажется crap (с точки зрения удобочитаемости). Я пишу SQL 7 лет, ‹shrug›   -  person ArtisticPhoenix    schedule 23.11.2017
comment
whereMonth Я сделал это с помощью этой строчки, ха-ха. Спасибо за подсказку, братан   -  person nethkennnnn    schedule 23.11.2017
comment
Конечно, я хотел бы сказать вам прямо. Но я работаю с основами, так всегда кажется чище. Я имею в виду, что у меня есть ORM, я regretfully использовал их (Доктрина), и я обнаружил, что они для меня как пара наручников.   -  person ArtisticPhoenix    schedule 23.11.2017
comment
stackoverflow.com/questions/851236/ благодарит этот поток, хотя :)   -  person nethkennnnn    schedule 23.11.2017
comment
Возможный дубликат раздела WHERE для поиска всех записей в конкретном месяц   -  person nethkennnnn    schedule 23.11.2017


Ответы (2)


Попробуйте лайк и регулярное выражение Внутри где используйте что-то вроде этого:

->Where('date', 'like', '%-' .$month. '-%')->get();

Я не пробовал.

person Vishnu M Raveendran    schedule 23.11.2017

person    schedule
comment
этот пример поможет вам - person Gowthaman D; 23.11.2017