Я создал свою собственную метку времени (рядом с updated_at & created_at) в базе данных и заполнил ее сеялкой. Пример данных выглядит следующим образом:Добавление углерода в модель для пользовательской метки времени
| id |user|start_at (my timetable)| | created_at | updated_at
| 194 | 47 | 2015-01-21 00:00:00 | | 2016-09-25 16:48:48 | 2016-09-25 16:48:48 |
Также я добавил в моей модели:
public function getCreatedAtAttribute($date)
{
return Carbon::createFromFormat('Y-m-d H:i:s', $date);
}
public function getUpdatedAtAttribute($date)
{
return Carbon::createFromFormat('Y-m-d H:i:s', $date);
}
public function getStartAtAttribute($date)
{
return Carbon::createFromFormat('Y-m-d H:i:s', $date);
}
Теперь я стараюсь в моем контроллере:
$val->updated_at->diffForHumans(); // works
$val->created_at->format('d M Y'); // works
$val->start_at->format('d M Y'); // doesn't work
Когда я var_dump
:
start_at:
public 'date' => string '2016-10-12 00:00:00.000000' (length=26)
public 'timezone_type' => int 3
public 'timezone' => string 'UTC' (length=3)
created_at:
+"date": "2016-09-25 16:48:48.000000"
+"timezone_type": 3
+"timezone": "UTC"
Обновление: Теперь я добавил protected $dates = ['start_at']
dd($val->start_at); // gives '2014-08-03 00:00:00'
dd($val->start_at->format('d M Y') // fails
Ошибка:
Unexpected data found. The separation symbol could not be found Data missing
Он должен работать таким образом. Не могли бы вы удалить функции атрибута get из вашего модального? В этом случае они не являются обязательными. Достаточно использовать свойство $ date. Возможно, использование функций getAttribute заставляет Laravel удвоить это преобразование, которое может вернуть ошибку. –