繁体   English   中英

使用输入MONTH和YEAR过滤记录,但记录仍返回当前的MONTH和YEAR

[英]Filter the record using input MONTH and YEAR but record still return current MONTH and YEAR

我正在通过输入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时,该代码未运行。 谢谢!

使用Carbon :: parse代替Carbon :: now

选项1

如果您的输入是这样的:2018-11-12(Ymd)

$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();

选项2

如果您的输入是这样的:2018-11-12 10:10:59(Ymd 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/

选项3

如果您的输入是这样的:

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();

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM