Laravel по-русски

Русское сообщество разработки на PHP-фреймворке Laravel.

Ты не вошёл. Вход тут.

#1 12.07.2019 15:31:18

На полях типа date не работает Attribute Casting

В Ларе есть такая штука как Attribute Casting

Я хочу чтобы поля типа date у определенной модели везде выводились в формате дд.мм.гггг - так как это принято в России.
Нашел, что в Laravel 5.8 у модели есть свойство $casts

Я в своей модели задал это свойство

protected $casts = [
        'enroll_date' => 'date:DD.MM.YYYY',
        'paid_date' => 'date:DD.MM.YYYY',
        'paid_untill' => 'date:DD.MM.YYYY',
    ];

Но при сохранении  модели в базу вылетает ошибка

InvalidArgumentException
Unexpected data found. Unexpected data found. Data missing

Помогите решить проблему, пожалуйста. Я хочу чтобы во всем приложении даты выводились в формате привычном в России: DD.MM.YYYY

Не в сети

#2 12.07.2019 15:43:28

Re: На полях типа date не работает Attribute Casting

Я делал так - $variable->created_at->format("d.m.Y")
На выходе получаю - 12.07.2019

Не в сети

#3 12.07.2019 15:49:34

Re: На полях типа date не работает Attribute Casting

Спасибо, что поделились! Да, это самое очевидное решение!
Ещё можно в модели для нужных полей прописать get и set атрибуты.
Но это все много лишних строк кода!
А хочется лаконичности и по идее $casts для этого и придумали.

Не в сети

#4 12.07.2019 15:52:12

Re: На полях типа date не работает Attribute Casting

Дело в том, что некоторые SQL не могут в Российский формат. С проблемой я столкнулся на postgresql

вывожу так же как сказал Morry

tmp[0]->date_passport->format('d.m.Y')

Не в сети

#5 12.07.2019 17:27:47

Re: На полях типа date не работает Attribute Casting

Я использую MySQL и в MySQL меня устраивает в каком формате хранятся данные. Мне только вывод нужен в адаптированном под РФ формате. Ну и соответственно когда сохраняю в базу строку DD.MM.YYYY нужно чтобы сохранялось в формате по-умолчанию.

Не в сети

Подвал раздела