กรองตามเดือนด้วยรูปแบบ 'Y-m-d'

ฉันมี 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 lexer/parser...   -  person ArtisticPhoenix    schedule 23.11.2017
comment
@ArtisticPhoenix ฉันจะใช้ฝีปากใน laravel bro ได้อย่างไร? ฮ่าๆ   -  person nethkennnnn    schedule 23.11.2017
comment
ฉันไม่รู้ว่าฉันไม่ได้ใช้ Laravel แต่ตัวสร้างคิวรีนั้นดูเหมือน crap สำหรับฉัน (จากมุมมองของความสามารถในการอ่าน) ฉันเขียน SQL มา 7 ปีแล้ว ‹ยัก›   -  person ArtisticPhoenix    schedule 23.11.2017
comment
whereMonth ผมทำโดยใช้บรรทัดนี้ 555 ขอบคุณสำหรับเบาะแสครับพี่   -  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 Clause เพื่อค้นหาบันทึกทั้งหมดในเฉพาะ เดือน   -  person nethkennnnn    schedule 23.11.2017


คำตอบ (2)


ลอง like และ regex Inside โดยที่ ใช้สิ่งนี้:

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

ฉันไม่ได้ลองมัน

person Vishnu M Raveendran    schedule 23.11.2017

person    schedule
comment
ตัวอย่างนี้จะช่วยคุณได้ - person Gowthaman D; 23.11.2017