Преобразование строки в углерод

Я использую Laravel 5.1

Несколько дней назад я использовал protected $dates = ['license_expire'] в моей модели, чтобы преобразовать дату строки в экземпляры Carbon. В HTML значение по умолчанию в форме создания для даты было Carbon\Carbon::now()->format('Y-m-d')

Чтобы показать оповещение на домашней странице, я использовал <p>Licence Expired: <b>{{ $employee->license_expire < Carbon\Carbon::now()?'License has expired':$employee->license_expire->diffForHumans() }}</b></p>

До тех пор метод diffForHumans() работает нормально.

Но в этом случае значение по умолчанию для формы редактирования также было сегодня, независимо от того, что было в базе данных (я использую частичную форму). Чтобы решить эту проблему, я изменил значение по умолчанию в HTML, это NUll. И добавьте еще один метод в моей модели, чтобы показать текущую дату в форме создания.

public function getLicenseExpireAttribute($date)
{
    return Carbon::parse($date)->format('Y-m-d');
}

После этого, когда я перехожу на домашнюю страницу, у меня есть FatalErrorException, который говорит Call to a member function diffForHumans() on string

Когда я проверяю дату с помощью dd($employee->license_expire), она снова становится STRING.

Может ли кто-нибудь сказать мне, как я могу преобразовать строку в Carbon в этой ситуации?

или

Сделайте мою дату для формы формы как сегодняшнюю дату, дату изменения формы из базы данных, и я могу использовать diffForHumans(), чтобы отображать предупреждение на главной странице?

Ответы

Ответ 1

Ты был почти там.

Удалите protected $dates = ['license_expire']

а затем измените мутатор LicenseExpire на:

public function getLicenseExpireAttribute($date)
{
    return Carbon::parse($date);
}

Таким образом, он вернет экземпляр Carbon независимо от того, что. Таким образом, для вашей формы вы просто должны иметь $employee->license_expire->format('Y-m-d') (или любой формат), а diffForHumans() также должен работать на вашей домашней странице.

Надеюсь, это поможет!

Ответ 2

Попробуйте это

$date = Carbon::parse(date_format($youttimestring,'d/m/Y H:i:s'));
echo $date;