我正在通过输入MONTH和YEAR来获取该MONTH和YEAR的所有出勤记录,以获取所有出勤记录。但是我遇到一个问题,当我输入MONTH和YEAR时,它返回当前的MONTH和YEAR记录。这是我下面的功能代码
public function getEmployeeAttendance(){
$month = Carbon::now(request('attendance_date'))->format('m');
$year = Carbon::now(request('attendance_date'))->format('Y');
dump($month);
dump($year);
$emp_attendance = Attendance::whereMonth('attendance_date' , '=' , $month)
->whereYear('attendance_date' , '=' , $year)
->get();
if ($emp_attendance->isEmpty() ) {
return response()->json([
'Error' => 'No record!!!.']);
}
return response()->json(
[
'success' => true,
'data' => $emp_attendance
]
);
}
当我使用dd($ month)和dd($ year)时,它返回当前的MONTH为“ 11”和YEAR为“ 2018”,但是我在Postman中的输入为MONTH =“ 5”和YEAR =“ 2015” (结果应返回空记录,但返回所有当前数据)。
能否请您给我一些有关如何改进此代码的建议。我使用了另一个函数中的相同代码,但是在编写此代码以输入MONTH和YEAR时,该代码未运行。谢谢!
答案 0 :(得分:0)
使用Carbon :: parse代替Carbon :: now
答案 1 :(得分:0)
如果您的输入是这样的:2018-11-12(Y-m-d)
$month = Carbon::createFromFormat('Y-m-d', request('attendance_date'))->format('m');
$year = Carbon::createFromFormat('Y-m-d', request('attendance_date'))->format('Y');
dump($month);
dump($year);
$emp_attendance = Attendance::whereMonth('attendance_date' , '=' , $month)
->whereYear('attendance_date' , '=' , $year)
->get();
如果您的输入是这样的:2018-11-12 10:10:59(Y-m-d H:i:s)
$month = Carbon::createFromFormat('Y-m-d H:i:s', request('attendance_date'))->format('m');
$year = Carbon::createFromFormat('Y-m-d H:i:s', request('attendance_date'))->format('Y');
dump($month);
dump($year);
$emp_attendance = Attendance::whereMonth('attendance_date' , '=' , $month)
->whereYear('attendance_date' , '=' , $year)
->get();
有关更多信息:https://carbon.nesbot.com/docs/
如果您的输入是这样的:
1. Input box-1 >> 10(month)
2. Input box-2 >> 2018(year)
/*
# No need those section.
$month = Carbon::createFromFormat('Y-m-d H:i:s', request('attendance_date'))->format('m');
$year = Carbon::createFromFormat('Y-m-d H:i:s', request('attendance_date'))->format('Y');
dump($month);
dump($year);
# END
*/
$emp_attendance = Attendance::whereRaw("month(attendance_date) = '".request('attendance_month')."'")
->whereRaw("year(attendance_date) = '".request('attendance_year')."'")
->get();