2016-09-25 3 views
0

Я создал свою собственную метку времени (рядом с 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

+0

Он должен работать таким образом. Не могли бы вы удалить функции атрибута get из вашего модального? В этом случае они не являются обязательными. Достаточно использовать свойство $ date. Возможно, использование функций getAttribute заставляет Laravel удвоить это преобразование, которое может вернуть ошибку. –

ответ

1

Добавить start_at до $ даты атрибут вашей модели. Для этого вам не нужно создавать настраиваемые сеттеры или getter для атрибутов created_at или updated_at.

protected $dates = [ 
     'start_at', 
    ]; 
+0

Пожалуйста, проверьте обновленный бит моего вопроса – senty

0

Упоминается start_at как углеродное inastamce.

В модели добавить следующий код

protected $dates = [ 
     'start_at ', 
    ]; 

Надеется, что это будет работать.

+0

Теперь я начал получать: «Неожиданные данные найдены. Символ разделения не найден Данные отсутствуют 'dd ($ var-> start_at); – senty