Неожиданные данные, найденные во время сэкономить на красноречественстве / Laravel
-
21-12-2019 - |
Вопрос
У меня есть еще одно поле в базе данных по сравнению с created_at
и updated_at
в виде TIMESTAMP
Имя поля - дата.
Поэтому я перезаписал метод getDates()
на мою модель красноречиво, потому что я хотел, чтобы поле было создано из углерода.
public function getDates()
{
return ['date','created_at','updated_at'];
}
.
Но когда я пойду, чтобы создать новую запись в базе данных, она бросает мне исключение:
InvalidArgumentException Неожиданные данные найдены.Неожиданные данные найдены. Неожиданные данные найдены.
PS: значение, отправленное из формы в формате ЕС: d-m-Y h:i
Я не знаю, как выяснить эту проблему, любые предложения ценятся
Решение
Вас Array, возвращенный из GetDates, был объединен с Dafault, что приведет к:
['created_at','updated_at','deleted_at','date','created_at','updated_at'];
.
Так что используйте только «дату» и должны быть в порядке.
Попробуйте настроить мутатор для «даты» для преобразования данных из ввода в формат Timestamp. Ошибка, которую вы получаете, не красноречивая, а углерод.
public function setDateAttribute($value)
{
$this->attributes['date'] = Carbon\Carbon::createFromFormat('d-m-Y h:i', $value);
}
.
Также есть ошибка в документах, так как GetDates определяет доступ к датам, а не мутаторам.
Другие советы
Попробуйте:
Carbon::createFromFormat('d.m.Y H:i', $request->publishdate);
. Вы не можете использовать свой формат "d-m-y h: i"
Вы должны использовать один из тех: Timestamp Unix, String Date String (Y-M-D), строка даты, экземпляр DateIme / экземпляр углерода
Несмотря на то, что его лет, и я помещаю свой вклад для всех, кто все еще борется даже после установки мутатора.
Если элемент дата ввода HTML проходит дата в формате атома (1975-12-25т. 14: 15: 16-05: 00), то мутатор даты не поможет.Вам необходимо применить следующее исправление в освещенной \ базе данных \ Eloquent \ Model Class на линии # 2848, чтобы получить его работу (в Laravel # 5).
$value = Carbon::createFromFormat($format, (new DateTime($value))->format('Y-m-d H:i:s'));
.