#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();
//...
}