2016-12-17 9 views
0

у меня есть это, и это работает хорошо, чтобы дать мне UK отформатированные даты:Различные даты аксессоров в той же модели

protected $dateFormat = 'd-m-Y'; 
protected $dates = ['purchased', 'warranty_expires', 'scrapped_on', 'location_date', 'user_date']; 

Однако, я также создавать и изменять (а не стандартными Laravel, но мой собственный), которые являются отметками времени, а не датами. Как я могу автоматизировать форматирование этих двух полей при их извлечении, что-то вроде «d-m-Y H: i: s»?

ответ

1

Вы можете сделать это с помощью библиотеки Carbon

public function getFormattedPurchasedAttribute($date) 
{ 
    return Carbon::createFromFormat('Y-m-d H:i:s', $date)->format('d-m-Y H:i:s'); 
} 

Вы должны использовать класс углерода. Напишите эту строку сверху, где используется все пространство имен.

use Carbon; 
+0

Работает отлично. Спасибо – daninthemix

0

Я лично не использую атрибут $dateFormat, потому что он меняет формат для всех полей дат. Что бы я сделать, это создание пользовательских аксессоров получить отформатирован поля, например:

public function getFormattedPurchasedAttribute($value) { 
    return $this->asDateTime($value)->format('d-m-Y H:i:s'); 
} 

так что вы можете теперь использовать $model-formatted_purchased получить purchased поле форматируется так, как вы хотите

+0

Я получаю 'вызов в форме функции-члена() в строке' с этим. – daninthemix

+0

@daninthemix Пожалуйста, ознакомьтесь с измененным ответом –

+0

Теперь я получаю 'InvalidArgumentException в строке Carbon.php 425: Символ разделения не найден Данные для перехвата'. Также обратите внимание, что я не всегда создаю экземпляр модели перед ее использованием, поэтому '$ this' может не работать здесь. – daninthemix