Отфильтруйте запись, используя ввод MONTH и YEAR, но запись все еще возвращает текущие значения MONTH и YEAR. - PullRequest
0 голосов
/ 15 ноября 2018

Я работаю над получением всей записи о посещаемости, вводя МЕСЯЦ и ГОД, чтобы получить всю посещаемость в этот МЕСЯЦ и ГОД.Но у меня возникла проблема, что при вводе 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), он возвращает текущий МЕСЯЦ «11» и ГОД «2018», но мой ввод в Postmanis MONTH = "5" и YEAR = "2015" (результат должен возвращать пустую запись, но он возвращает все текущие данные).

Не могли бы вы дать мне несколько советов о том, как улучшить этот код.Я использую тот же код из другой функции, но он не работает, когда я пишу это, чтобы ввести МЕСЯЦ и ГОД.Спасибо!

Ответы [ 2 ]

0 голосов
/ 15 ноября 2018

Опция 1

Если ваш ввод такой: 2018-11-12 (Гмд)

$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 (Гмд Ч: 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();
0 голосов
/ 15 ноября 2018

используйте Carbon :: parse вместо Carbon :: now

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...