【发布时间】:2017-11-23 05:32:21
【问题描述】:
我有一个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;
}
【问题讨论】:
-
上帝查询构建器是如此
ugly但在 SQL 中你会这样做WHERE MONTH(date_field) = :month提醒我我必须使用 SQL lexer/parser 构建我的 ORM... -
@ArtisticPhoenix 我如何在 laravel bro 中用 eloquent 做到这一点?哈哈
-
我不知道我不使用 Laravel,但该查询构建器在我看来就像
crap(从可读性的角度来看)。我写 SQL 已经 7 年了, -
whereMonth我是用这条线做的哈哈。谢谢你的线索兄弟 -
当然,我希望我能直接告诉你。但我使用基础知识,这样看起来总是更干净。我的意思是我得到了 ORM,我已经
regretfully使用过它们( Doctrine ),我发现它们对我来说就像一副手铐。