Filter berdasarkan bulan dengan format 'Y-m-d'

saya punya date dengan format Y-m-d. Bagaimana cara memfilternya berdasarkan bulan? Saya menentukan bulan dengan angka seperti January = 1, February = 2 dan seterusnya.

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 sumber
comment
pembuat kueri tuhan sangat ugly tetapi dalam SQL Anda melakukannya WHERE MONTH(date_field) = :month Mengingatkan saya bahwa saya harus membangun ORM saya dengan SQL lexer/parser...   -  person ArtisticPhoenix    schedule 23.11.2017
comment
@ArtisticPhoenix bagaimana saya bisa melakukannya dengan fasih di laravel bro? ha ha   -  person nethkennnnn    schedule 23.11.2017
comment
Saya tidak tahu saya tidak menggunakan Laravel, tetapi pembuat kueri itu tampak seperti crap bagi saya (dari sudut pandang keterbacaan),. Saya telah menulis SQL selama 7 tahun, ‹mengangkat bahu›   -  person ArtisticPhoenix    schedule 23.11.2017
comment
whereMonth Saya melakukannya menggunakan baris ini haha. Terima kasih atas petunjuknya kawan   -  person nethkennnnn    schedule 23.11.2017
comment
Tentu, saya harap saya bisa memberi tahu Anda secara langsung. Tapi saya bekerja dengan dasar-dasarnya, selalu tampak lebih bersih seperti itu. Maksud saya, saya mendapatkan ORM, saya telah regretfully menggunakannya ( Doctrine ) dan saya menemukan bahwa ORM tersebut akhirnya menjadi seperti sepasang borgol bagi saya.   -  person ArtisticPhoenix    schedule 23.11.2017
comment
stackoverflow.com/questions/851236/ kredit ke thread ini :)   -  person nethkennnnn    schedule 23.11.2017
comment
Kemungkinan duplikat Klausa WHERE untuk menemukan semua catatan dalam spesifik bulan   -  person nethkennnnn    schedule 23.11.2017


Jawaban (2)


Coba suka dan regex Di dalam mana, gunakan sesuatu seperti ini:

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

Saya belum mencobanya.

person Vishnu M Raveendran    schedule 23.11.2017

person    schedule
comment
contoh ini akan membantu Anda - person Gowthaman D; 23.11.2017