PHP Дата в varchar / varchar на сегодняшний день

#php #laravel

#php #laravel

Вопрос:

Я пытаюсь сохранить поле формы ввода даты в varchar, но не могу понять, почему оно сохраняет разные значения, давайте посмотрим некоторый код:

Поле формы HTML

 <div class="form-group">
<label>Vencimento</label>
<input type="text" name="due_date" value="{{ old('due_date') }}" class="date-mask form-control @error('due_date') is-invalid @enderror" placeholder="Data de vencimento:">
@error('due_date')
<small class="text-danger">{{ $message }}</small>
@enderror
</div>
  

RegisterAccountsRequest.php (используя этот файл для проверки)

 public function rules()
    {
        return [
            'name' => 'required|min:3|max:255',
            'description' => 'required|min:3|max:1000',
            'value' => 'required|regex:/^d (.d{1,2})?$/',
            'amount_paid' => 'regex:/^d (.d{1,2})?$/',
            'due_date' => 'required|date_format:"d/m/Y"',
            'pay_date' => 'nullable|date_format:"d/m/Y"',
            'status' => 'required',
        ];
    }
  

FinancialController.php

  public function store(RegisterAccountsRequest $request){
...

$data->due_date = date('Y-m-d H:i:s');
$data->save();

...
  

Проблема в том, что записанный день всегда сегодня, даже если я введу день в будущем, например, 25/10/2020

Результат (сегодня): 2020-10-20 18:30:08

Это VARCHAR в базе данных

Что я делаю не так?

Комментарии:

1. потому что вы вызываете date , а не передаете ему временную метку; поэтому он использует «now» ( time() ) … date($format, $timestamp)

Ответ №1:

При этом date('Y-m-d H:i:s'); вы вызываете текущую дату, date() это встроенная функция PHP. У вас есть due_date по вашему запросу, поэтому получите его из запроса :

 public function store(RegisterAccountsRequest $request)
{
   // ...
   $data->due_date = $request->due_date;
   $data->save();
   //...
}