Неправильная дата в разборе Carbon - PullRequest
0 голосов
/ 15 января 2019

Я использую laravel 5.6 и добавляю дату через сетку данных dx, однако она дает текущую дату, а не ту, которую я выбрал.

Я пытался изменить формат даты, но в этом случае дата правильная. После первой вставки он дает мне неправильную дату (т.е. 1970-01-01).

$grids = $request->except('_token');
$request->request->set('attendance_date', Carbon::parse($request- 
>attendance_date)->format('Y-m-d'));

$grids=array();
$grids['name'] = $request['item']['name'];
$grids['attendance_type'] = $request['item']['attendance_type'];
$grids['dept'] = $request['item']['dept'];
$grids['user_id'] = $request['item']['user_id'];
$grids['attendance_date'] = $request->attendance_date;
$grids['attendance_month'] = $request->attendance_month;
$grids['attendance_year'] = $request->attendance_year;
$grids['org_name'] = $request->org_name;
$grids['org_id'] = $request->org_id;
dd($grids);

  $requesteddate = $request->attendance_date;
  $requesteduser_id = $grids['user_id'];
  $attendances = DB::table('attendances')->where(['user_id' => 
  $requesteduser_id])->get()->toArray();
   foreach ($attendances as $key => $value) {
    $dbattendance_date = $value->attendance_date;
    $dbattendance_user_id = $value->user_id;

    if ($dbattendance_date == $requesteddate && $dbattendance_user_id == 
       $requesteduser_id) {

        $insert['status'] = 'error';
        $insert['message'] = 'Attendance Already Exits';
        return Response()->json($insert);

    }
}
$insert = Attendance::create($grids);
return Response()->json($insert);

enter image description here

Ответы [ 2 ]

0 голосов
/ 17 января 2019

Спасибо за ответ, так как я решил это.

$newattendance_date = $request['item']['attendance_date'];
    if(strpos($newattendance_date,' GMT') !== false){
        $newattendance_date = substr($newattendance_date,0,strpos($newattendance_date,' GMT'));
        $newattendance_date = strtotime($newattendance_date);
        $newattendance_date =  date('Y-m-d', $newattendance_date); 
    }
    $attendance_date= $newattendance_date;
0 голосов
/ 16 января 2019

В вашем вопросе есть некоторая не относящаяся к делу информация, и несколько вопросов, которые мне нужно знать, чтобы быть более точными. При этом, я подозреваю, что есть несколько возможностей:

Возможность # 1

У вас отключены отчеты об ошибках. Существует множество причин, по которым вы можете не получить правильную дату, и часто с включенным отчетом об ошибках вы увидите причина. Например, использование $request->attendance_date может возвращать значение null, в результате чего синтаксический анализ возвращается к первой возможной дате UTC.

Возможность # 2

Вы делаете $request->request->set('attendance_date' ... вместо $request->set('attendance_date'. Не уверен, почему вы это делаете, но позже, когда вы попытаетесь использовать $request->attendance_date, будет значение null, потому что оно никогда не было установлено правильно. Опять же, вы можете увидеть эту проблему, вероятно, с включенным сообщением об ошибках / отображением ошибок.

Возможность № 3

Дата, указанная в вводе Request, неверна. Это может быть что угодно, от пустой строки до недопустимой даты. Хорошее практическое правило: если нативная функция PHP strtotime() может ее правильно проанализировать, то и Carbon тоже может.

...